1、 习题 4 参考解答1写出下面函数的运行结果。#includevoid fx701(int k,int n,float a);int main()int k=1,n=5;float a=3.2,b=8.5;printf(“调用前:k=%d n=%d a=%.2f b=%.2fn“,k,n,a,b);fx701(k,n,a);printf(“调用后:k=%d n=%d a=%.2f b=%.2fn“,k,n,a,b);return 0;void fx701(int k,int n,float a)int q=100;float b,x=6.2; k+=q; n*=q; a-=x; b=3.5*a
2、;printf(“函数中:k=%d n=%d a=%.2f b=%.2fn“,k,n,a,b);解:调用前:k=1 n=5 a=3.20 b=8.50函数中:k=101 n=500 a=-3.00 b=-10.50调用后:k=1 n=5 a=3.20 b=8.502编写一个函数,实现从键盘输入一个整数,如果该整数为素数,则返回 1,否则返回 0。解:#include#include int Is_prime(int i) int j=0; for(j=2;j float area(float a,float b) float s;s=a*b;return(s); float zc(float
3、a,float b) float p;p=2*(a+b);return(p); int main() float a,b,s,p;printf(“请输入长方形的边长 a,b:“);scanf(“%f%f“,s=area(a,b);p=zc(a,b);printf(“长方形的周长为 p=%f,长方形的面积为 s=%f“,p,s);程序运行情况如下:请输入长方形的边长 a,b:3 4长方形的周长为 p=14.000000,长方形的面积为 s=12.0000004编写一个函数求一个整数 n 的阶乘,在主函数中计算并输出 10!的值。解:#include float fc(int n) float s
4、;if(n=1|n=0) s=1;else s=n*fc(n-1);return(s); int main() float k;k=fc(10);printf(“10!=%fn“,k);return 0;程序运行结果如下:10!=3628800.0000005已知函数 fun2 的原型说明为 “long fun2(int m,int n);”,调用该函数计算 mn 的和(其中 nm0) ,例如:若 m=5,n=20,则计算 5+6+7+8+20 的值。要求在主函数中通过键盘输入 m 和 n 的值,并输出和的值。解:#include long fun2(int m,int n) long s;i
5、nt i;s=0;for(i=m;im:n“);scanf(“%d%d“,sum=fun2(m,n);printf(“sum=%dn“,sum);return 0;程序运行结果如下:请输入 m,n 的值 nm:5 20sum=2006编写一个函数重复打印给定的字符 n 次。解:#include void fun2(char m,int n) int i;for(i=1;ivoid fun1()int x=5;printf(“x=%dn“,x); void fun2(int x)printf(“x=%dn“,+x); int main()int x=2;fun1();fun2(x);printf
6、(“x=%dn“,x);return 0;解:x=5x=3x=28指出下列程序中各变量的存储属性,并写出程序的执行结果。(1)#includevoid add(int i);int main()int i=1;add(i);printf(“main:i=%dn“,i);return 0;void add(int i)i=i+3;printf(“add:i=%dn“,i);解:add:i=4main:i=1其中,i 是自动型变量。(2)#includeint i=1;void add1();int main()add1();printf(“i=%dn“,i);return 0;void add1
7、()i=i+3;解:i=4 其中,该变量是外部型变量。(3)#includevoid add2(int i);int main()int i=2;add2(i);add2(i);return 0;void add2(int i) static int j=5;j=i+j;printf(“j=%dn“,j);解:j=7j=9其中,变量 i 是静态型变 量。9编写程序实现以下图形的输出。* * * * * * * * * * * * * * * * * * * * * *解:#include void main() int i,j,k; for(i=1;i#define X 5#define Y
8、X+1#define Z Y*X/2int main()int a;a=Y;printf(“%d %dn“,Z,-a);return 0;解:7 511编写一个函数,将一个十进制整数转换为二进制数。解:#include void main()long num;int ozb();printf(“请输入一个十进制数:“);scanf(“%ld“,printf(“%ld 的二进制数为:“,num);ozb(num);int ozb(long num)int a32=0,i=0;while(num=1)ai=num%2;num=num/2;i+;for(i=i-1;i=0;i-)printf(“%d“,ai);printf(“n“);return(ai);程序运行结果如下:请输入一个十进制数:55 的二进制数为:10112编写一个函数,找出任意整数的全部因子。解:#include int N;void main() void yz();scanf(“%d“,/*输入 N 的值*/ yz(N);void yz()int i,p=1; for(i=1;iN+1;i+) /*执行 for 语句,是用来求和的*/ if(N%i=0) /*判断是否是 N 的因子,如果是则加上*/ p=i;printf(“%d “,p); 程序运行结果如下:151 3 5 15