预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共60页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上机习题CH8SUM:写出求1+2+3+……+n的递归函数。CH8FIBO:写出求第n个Fibonacci数的递归函数。CH8EX1:设计两函数gcd(n,m)和lcm(n,m)。CH8EX4:写一函数,实现3×3二维数组转置。CH8EX5:写一函数,实现字符串逆置voidstrreverse(chars[])CH8EX6:写一函数,连接两串strcat(s1,s2)。第8章练习:CH8EX3:设计判断素数的函数CH8EX9:统计串中字母、数字、空格、其他字符个数第8章函数例8.1一个简单函数调用的例子voidprintstar()/*无参函数*/{printf("*************\n");}voidprint_message()/*无参函数*/{printf("Howdoyoudo!\n");}voidmain(){printstar();/*函数调用语句*/print_message();printstar();}说明:一个源程序文件由一个或多个函数构成一个C程序由一个或多个源程序文件构成程序总是从main主函数开始执行所有函数都是平行定义的,没有包含关系函数从使用角度分为以下两种:①标准库函数②用户自定义函数函数从形式分为以下两种:①无参函数②有参函数函数的构成类型标识符函数名(形参表){声明部分执行部分}例1无返回值的无参函数voidhello()/*空类型,无参数*/{printf("Hello,world!\n");}/*要结合main使用*/形式参数和实在参数例8.2有返回值的有参函数#include"stdio.h"intmax(intx,inty){return(x>y?x:y);}voidmain(){inta,b;scanf("%d%d",&a,&b);printf(“Maxis%d\n",max(a,b));}定义函数时,写在函数头圆括号中的变量名是形式参数写在调用函数圆括号中的表达式是实在参数,往往是一个已经确定的值调用时,实在参数是按顺序传递给对应的形式参数形参是变量,实参是表达式形参与对应实参不必类型完全一致,但形参必须能赋值兼容于实参形参对实参的数据传递是单向值传递例2交换两整数不成功之例#include"stdio.h"voidswap(intx,inty){intt;t=x,x=y,y=t;printf("x=%d,y=%d\n",x,y);}voidmain(){inta=1,b=99;swap(a,b);/*单向传值*/printf("a=%d,b=%d\n",a,b);}函数的返回值通过调用函数希望获得唯一确定的值,就是函数的返回值函数返回值由return语句实现,return语句将被调函数中的一个确定的值带回主调函数中return后面的表达式可以放在圆括号中,也可以放在空格后面函数如果没有返回值,就不需要return语句,也可以用空return语句:return;表示结束没有返回值的函数类型一般应定义为void例8.3返回值类型与函数类型不同intmax(floatx,floaty){floatz;z=x>y?x:y;returnz;}voidmain(){floata,b;intc;scanf("%f%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}函数的调用函数调用形式:函数名(实参表)调用方式函数语句:scanf("%d",&x);printf("a=%d\n",x);printstar();函数表达式:c=max(a,b);函数参数:x=sin(atan(1.23));实参求值是按“自右而左”顺序进行(P161)例:i++、i与++i的输出顺序执行以下程序段:i=10;printf("%d,%d,%d\n",++i,i,i++);输出结果为:12,11,10而执行程序段:i=10;printf("%d,%d,%d\n",i++,i,++i);输出结果为:11,11,11例8.4实参求值的顺序intf(floata,floatb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;returnc;}voidmain(){intp,i=2;p=f(i,++i);/*f(3,3)*/printf("%d\n",p);}被调函数的声明例8.5对被调函数作声明voidmain(){floatadd(floatx,floaty);floata,b;scanf("%f%f",&a,&b);prin