1、sum = %dn, sum(n);return 0;int sum(int n)int result, i;result = 0; for(i = 1; i b) return a; else return b;【练习5-3】数字金字塔:输入一个正整数 n,输出n行数字金字塔。 int n,i,j; printf(“Enter n: i+) for(j = 1; j = n - i; j+) );= i;%d , i); putchar(n 【练习5-4】 思考:若把例 5-9 中静态变量 f 定义成普通局部变量,还能实现计算 n!吗?请上机检验。若把 f 换成全局变量又会如何?若把例 5-
2、9 中静态变量 f 定义成普通局部变量,无法实现计算 n!,因为函数返回后 f 单元被系统回收,不再保存原有数据。若把 f 换成全局变量,则能实现计算 n!,因为 f 的作用范围和生命周期一直存在。习题5一、选择题1在 C 语言程序中,若对函数类型未加显式说明,则函数的隐含类型为 D 。Avoid Bdouble Cchar Dint 2下列程序的输出结果是 D 。fun(int a, int b, int c) c = a * b; int c; fun(2, 3, c); printf(”%dn”, c);A0 B1 C6 D无法确定3建立自定义函数的目的之一是 B(优先)、C 。A提高程
3、序的执行效率 B提高程序的可读性C减少程序的篇幅 D减少程序文件所占内存4以下正确的函数定义形式是 A 。Adouble fun(int x, int y) Bdouble fun(int x; int y)Cdouble fun(int x, int y); Ddouble fun(int x, y)5以下不正确的说法是 C 。A实参可以是常量、变量或表达式C形参可以是常量、变量或表达式B实参可以是任何类型D形参应与对应的实参类型一致6以下正确的说法是 D 。A实参与其对应的形参共同占用一个存储单元B实参与其对应的形参各占用独立的存储单元C只有当实参与其对应的形参同名时才占用一个共同的存储单
4、元D形参是虚拟的,不占用内存单元二、填空题1下列程序的输出结果为 2357 。int fun3(int m); int n; for (n = 1; n 10; n+) if (fun3(n) = 1) printf(, n); return 0;int fun3(int m) int i; if (m = 2 | m = 3) return 1; if (m 0) if(fun1(n) %d 中各位数字按从小到大排列nint fun1( int m ) int k; k = m % 10; while(m) if( m / 10 % 10 k) else m = m/10 ; k = m %
5、 10; return 1;3下列函数输出一行字符:先输出 kb 个空格,再输出 n 个指定字符(由实参指定)。请根据题意,将程序补充完整。void print( int kb, int n, char zf )= kb; printf(“ ”); for (i = 1; i+ ) printf(“%c”, zf);三、程序设计题1使用函数计算分段函数的值:输入 x,计算并输出下列分段函数 f(x) 的值。要求定义和调用函数 sign(x) 实现该分段函数。 1 x 0f(x)= 0 x 0-1 x 0 int sign(int x); int x, y;scanf(x);y = sign(x
6、);printf(sign(%d) = %dn, x, y);int sign(int x) int y;if(x0) y=1;else if (x=0) y=0;else y=-1;return y;2使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数 even(n)判断数的奇偶性,当 n 为偶数时返回 1,否则返回 0。int even(int n); int n, sum; sum = 0; while(n 0) if(even(n) = 0) sum = sum + n;The sum of the odd numbers is %d.n, s
7、um);int even(int n) if (n % 2 = 0) y = 1; else y = 0; return y;3.使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位小数)。要求定义和调用函数dist(x1,y1,x2,y2)计算两点之间的距离。#includedouble dist(double x1,double y1,double x2,double y2); double x1,y1,x2,y2;Enter x1 and y1:x1,&y1);Enter x2 and y2:x2,&y2);Distance=%.2l
8、f,dist(x1,y1,x2,y2);double dist(double x1,double y1,double x2,double y2) double distance; distance=sqrt(pow(fabs(x2-x1),2)+pow(fabs(y2-y1),2); return distance;4利用函数计算素数个数并求和:输入两个正整数 m 和 n(1=m, n=500),统计并输出 m 和 n 之间的素数的个数以及这些素数的和。要求定义并调用函数 prime(m)判断 m 是否为素数。int prime(int m); int m,n,sum,count; printf(Input m: scanf(m);Input n: scanf( sum=0; count=0; for(;m=n;m+) if(prime(m)=1) sum=sum+m; count+; printf(%d和%d之间素数的个数:%dn,m,n,count);%d和%d之间素数的和:,m,n,sum); return 0;i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1