C程序设计临时教程.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计临时教程.ppt

C程序设计教程 (十一) 函数的调用 数组作为函数参数 局部变量和全局变量 变量的存储类别 上节内容回顾 1.函数的定义、声明和调用,以及函数的参数和函数的值; main( ) { float add(float x,float y); float a,b,c; scanf(“%f,%f”,a,b); c=add(a.b); printf(“sum is %f”,c); } float add(float x,float y) { float z; z=x+y; return(z); } 2函数原型 在C语言中,对被调用函数的函数声明称为函数原型 作用:利用函数声明在程序的编译阶段对调用函数的合法性进行全面的检查,和函数原型不匹配的函数调用会导致编译出错,它属于语法错误。 函数原型的一般形式: 函数类型 函数名(参数类型1,参数类型2,…) 函数类型 函数名(参数类型1 参数名1,参数类 型2 参数名2,…) §8.5 函数的嵌套调用 C语言的函数定义都是互相平行的独立的,在定义函数时,一个函数内不能包含另一个函数。也就是说C语句不能嵌套定义函数,但可以嵌套调用函数 。 嵌套调用实际上就是在调用 一个函数时,该函数又同时调用另一个函数。 如图: 举例说明: 例8.6 用弦截法求方程f(x)=0的根。 1、算法 (1)先取两个不同的点x1,x2,如果f(x1)和 f(x2)异号,则在(x1,x2)区间内必有根。若f(x1)和f(x2) 同号,则改变x1,x2使f(x1)和f(x2)异号为止。注意x1,x2的值不应相差太大,以保证(x1,x2)区间内只有一个根。 (2)连接f(x1)和f(x2) 两点,此线与x轴交于x点,见图8-6。求出曲线上对应x点的坐标(x,f(x))。 (3)若f(x)与f(x1)同号,则根必在(x,x2)区间内,此时将x作为新的x1。如果f(x)与f(x2)同号,则根必在(x1,x)区间内,此时将x作为新的x2。 (4)重复步骤(2)和(3),直到|f(x)|ε, ε为一个很小的数。如:10-6。则认为f(x)=0。 §8.6 函数的递归调用 1 定义:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 实际上,递归调用可以看作是嵌套调用的特殊形式之一,即自己调用自己。 在意义上,它相当于一个循环。 如图: 例如: 有5 个人坐在一起,问第五个人多少岁?他说比第四个人大2岁。问第四个岁数,他说比第三个人大2岁,问第三个人,又说比第二个人大2岁。问第二个人,说比第一个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大。 age(int n) { int c; if(n= =1) c=10; else c=age(n-1)+2; return( c); } main( ) { printf(“%d\n”,age(5)); } §8.7 数组作为函数参数 1 数组元素作函数实参 2 数组名作函数参数 3 用多维数组名作函数参数 一、数组元素作函数实参 数组元素可作为函数实参,用法与变量作为函数实参相同。也是单向的值传递。 如例8.10 比较两个数组的大小。比较方法是:对两个有相同元素个数的a、b两数组,将它们对应地逐个比较(即a[0]与b[0]相比,a[1]与b[1]相比),如果a数组中的元素大于b数组中的相应元素的数目多于b数组中元素大于a数组中的相应的元素的数目(例如a[i]b[i]6次, b[i]a[i]3次,i每次为不同的值),则认为a数组大于b数组,并分别统计出两个数组相应元素大于、等于、小于的次数。 main( ) {int large(int x,int y); int a[10],b[10],i,n=0,m=0,k=0; printf(enter A:\n); for(i=0;i10;i++) scanf(%d,a[i]); printf(\n); printf(enter B:\n); for(i=0;i10;i++) scanf(%d,b[i]); printf(\n); for(i=0;i10;i++) {if(large(a[i],b[i])==0) n=n+1; else if(large(a[i],b[i])==0) m=m+1; else k=k+1; } printf(a[i]b[i]%d

文档评论(0)

rewfdgd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档