C语言程序设计教程第四章练习题解析(1) 联系客服

发布时间 : 星期日 文章C语言程序设计教程第四章练习题解析(1)更新完毕开始阅读f41a59b92e3f5727a4e96224

printf(“该数是奇数”); }

int main() {

int num;

scanf(“%d”,&num); func(num); return 0; }

解析:func()函数对传入进来的参数num进行奇偶判断; 主函数中调用func()函数,传入参数得到判断结果。

31、编写一个函数,实现1-100的相加和,并在主函数中调用。 答案:#include int func() {

int num, sum = 1;

for(num = 1; num <= 100; num++) {

sum += num; }

return sum; }

int main() {

int sum = 0; sum = func();

printf(“sum = %d”,sum); return 0; }

解析:func()函数实现1-100的相加和,并将结果返回给调用者。 主函数中的sum接收调用func函数的返回值,并将其打印

32、请编写一个程序,用户从键盘输入英文字母,如果是大写,将其转换成小写输出;如果是小写,将其转换成大写输出。

提示:英文字母在计算机中以ASCII码表形式存在。 答案:#include int main() {

char ch; printf(\请输入英文字母:\\n\ scanf(\ if (ch >= 'A' && ch <= 'Z') printf(\ else if (ch >= 'a' && ch <= 'z')

printf(\return 0; }

解析:英文字母对应的ASCII码值,大写比对应小写小32

33、请编写一个程序,用户输入一个十进制整数,分别输出其十进制、八进制、十六进制对应的数值。

答案:#include int main() {

int num;

scanf(“%d”,&num);

printf(“十进制为:%d\\n八进制为:%o\\n十六进制为:%x\\n”,num,num,num); return 0; }

解析:十进制输入格式符为%d,八进制输出格式符为%o,十六进制输出格式符为%x。 34、请编写一个程序,实现两个数的求和,并打印出来。 答案:#include void show(int s) { printf(\两个数的和为:%d\ return; }

void add(int a, int b) { int s = a + b; show(s); return; }

int main() {

int s = a + b; show(s); return 0; }

解析:add()函数实现两个数相加,show()函数将两个数相加的结果打印出来。 35、请编写一个程序,用户从键盘随机输入四个数,比较这个四个数得出其中最大值并输出。 提示:

1)编写一个两个数值比较的函数

2)编写一个四个数值比较的函数,调用这个函数,在该函数中调用两个数值比较的函数 答案:#include int max2(int a, int b) { if (a > b){ return a;

} else { return b; } }

int max4(int a, int b, int c, int d) { int res; res = max2(a, b); res =max2(res,c); res = max2(res, d); return res; }

int main() {

int a, b, c, d, max;

printf(\请输入四个整数:\ scanf(“%d%d%d%d”,&a,&b,&c,&d); max = max4(a, b, c, d); printf(\return 0; }

解析:输入四个数,调用max4()函数,在max4()函数中又调用max2()函数进行两两比较,

最后得出最大值,返回给调用函数。

36、请编写一个程序,计算s = 2^2! + 3^2!; 提示:

1)编写一个函数计算平方值 2)编写一个函数计算阶乘 答案:#include long f1(int p){ int k; long r; long f2(int); k = p*p; r = f2(k); return r; }

long f2(int q){ long c = 1; int i; for (i = 1; i <= q; i++) c = c*i;

return c; }

int main() { int i; long s = 0; for (i = 2; i <= 3; i++) s = s + f1(i); printf(\return 0; }

解析:函数f1()实现了计算数值的平方,函数f2()实现了阶乘计算,在f1()中调用f2()实现

了计算表达式的值。

37、请编写一个程序,用递归方法实现n!。 提示:

1) 递归调用是函数自身调用自身的过程 2) 每递归调用一次n就要自减一次 答案:#include int add(int n) { if (n == 1) return 1; else return n + add(n - 1); }

int main() {

int n ;

scanf(“%d”,&n); int sum = add(n);

printf(“结果为:%d\\n”,sum); return 0; }

解析:add()函数实现递归,每调用一次n要减1. 38、请编写一个程序,求出m的n次方。 提示:编写递归函数求解。 答案:#include int func(int m, int n) { if (n == 1) return m; else return m*func(m, n - 1); }