(例73】求1~100的累加和。 int sum1000 fint i, t=0; e int sum (int x f int i, t=0; 考 for(i=1;i<=100;i++) for (i=l; i<=X; i++) 两 个 return(t; 3 return(t) main( 序 main( i int s; 有 i int s s=um1000; printf("%dⅦn",s) 不ssum(100 同/," intf("%dm",s); 程序输出结果: 程序输出结果 5050 5050 2005年3月
2005年3月 11 程序输出结果: 5050 思 考: 两 个 程 序 有 何 不 同 程序输出结果: 5050
7,2.3函数参数与函数的返回值 1.函数的形式参数与实际参数 【例74】编一程序,将主函数中的两个变量的值传 递给swap函数中的两个形参,交换两个形参的值。 void swap(int x, int y) d int z; 1形式参数(形参) ZX, x-y, printf("nt%a,y=%d",x y); 际参数(实参 maino 单向值传递 f int a= Ⅵ程序输出结果: printf(" lna=%d, b=%od\n", a, b) x=20,y=10 a=10.b=20 2005年3月
2005年3月 12 void swap(int x, int y) { int z; z=x; x=y; y=z; printf("\nx=%d,y=%d" ,x ,y); } main( ) { int a= 10,b=20; swap(a,b); printf("\na=%d,b=%d\n" ,a,b); } 程序输出结果: x=20,y=10 a=10,b=20 形式参数(形参) 【例7.4】编一程序,将主函数中的两个变量的值传 递给swap函数中的两个形参,交换两个形参的值。 单向值传递
有关形参和实参的说明: 13 ①当函数被调用时才给形参分配内存单元。调用结 束,所占内存被释放。 ②实参可以是常量、变量或表达式,但要求它们有 确定的值。 ③实参与形参类型要一致,字符型与整型可以兼容 ④实参与形参的个数必须相等。在函数调用时,实 参的值赋给与之相对应的形参。“单向值传递 准意:在TC中,实参的求值顺序是从右到左。 2005年3月
2005年3月 13 ① 当函数被调用时才给形参分配内存单元。调用结 束,所占内存被释放。 ② 实参可以是常量、变量或表达式,但要求它们有 确定的值。 ③ 实参与形参类型要一致,字符型与整型可以兼容 。 ④ 实参与形参的个数必须相等。在函数调用时,实 参的值赋给与之相对应的形参。 “单向值传递”
【例7.5】函数调用中实参的求值顺序。 14 void fun (int a,int b) & printf(a=%d, b=%dn,a, b );) main d int m=5; fun 3+m, m++); 程序输出结果: a=9b=5 2005年3月
2005年3月 14 程序输出结果: a=9,b=5
2的数的类型与函数的返回值 15 ()函数的类型【例76〗输出两个数中的大数。 max(int x,int y) 说明: & int z; ①函数的类型 z=x>y?x:ys 决定了函数返 return(z);/返回z的值 回值的类型。 若省略函数的 main( 类型,系统默 i int a, b 认其为nt型。 scanf(%d, od", &a, &b); ②无返回值的 c=max(a, b) 函数应将其类 printf( max is od\n",c) 型定义为void (空)类型 2005年3月
2005年3月 15 说明: ①函数的类型 决定了函数返 回值的类型。 若省略函数的 类型,系统默 认其为int型。 ②无返回值的 函数应将其类 型定义为void