D.调用函数和被调用函数可不在同一个文件中 10.对于C语言中的函数,正确的叙述是( ) A.两个函数可以相互调用,但不能自己调用自己
B.程序执行可以始于任何一个函数,但结束必须在主函数 C.两个函数既可以定义成并列关系又可以定义成嵌套关系
D.一个C程序可以由多个文件组成,一个文件又可以由多个函数组成 11.在C语言中,若定义函数时类型缺省,则类型隐含为( )
A. int B. char C. float D. void 12.下列关于函数定义正确的是( ) A. fun(int x,y){int z;return z;} B. void fun(int x,int y){return x+y;}
C. fun(x,y){int x,y;double z;z=x+y;return z;} D. double fun(int x,int y) {double z;z=x+y;return z;) 13.下面的函数调用语句中func函数的实参个数是( ) func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3 B.4 C.5 D.8
14.函数调用语句fun(fun(a,a+b,a+c),(a,b,c),5);中函数fun的参数个数是( )
A.3 B.4 C.5 D.6 15.设函数定义如下:
float f1 (float a, float b) {return (a+b);}
若有float x=1.1, y=2.2; 则以下语句中正确的函数调用是( ) A.printf (″%f″, f1(x)); B.printf (″%f″,f1(&x, y)); C.printf (″%f″,f1(*x,*y)); D.printf (″%f″,f1(x, y)); 16.使用递归函数计算n!(n=0,1,2,3,....)的是( ) A. fac(int n) B. fac(int n) {int i,f=- 1; {
if(n= =0) return 1; if(n= =0‖n= =1) return 1; else for(i=1 ;i<=n;i++) f*=i; else return n*fac(n-1);} return f; } C. fac(int n) D. fac(int n) {int i=l,f=l; {int i=1,f=1;
if(n= =0) return l; if(n= =0) return 1;
else while(i<=n) f*=i++; else do { f*=i;}while (i++ { static int x=1; x*=2; return x; } main() { int i,s=1; for(i=1;i<=2;i++) s=fun(); printf(\A.0 B.1 C.4 D.8 18.以下程序运行后的输出结果是( ) void fun(int p) { int d=2; p=d++; printf(\main() { int a=1; fun(a); printf(\ A.32 B.12 C.21 D.22 19. 以下程序运行后的输出结果是( ) int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf(\int f(int n) { static int a=1; n+=a++; return n; } A.7 B.8 C.9 D.10 20. 以下程序运行后的输出结果是( ) int fun(int x,int y) { if(x==y) return(x); else return((x+y)/2); } main() { int a=4,b=5,c=6; printf(\ A.3 B.6 C.8 D.12 21. 以下程序运行后的输出结果是( ) int f(int x,int y) { return((y-x)*x); } main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf(\A.10 B.9 C.8 D.7 22. 以下程序运行后的输出结果是( ) int fun(int a, int b) { if(b==0) return a; else return(fun(--a,--b)); } main() { printf(\ A.1 B.2 C.3 D.4 二、填空题 1.在C语言中,形参和实参的传递方式分为地址传递和_______。 2. 若定义函数时类型缺省,则该函数默认的类型是____________。 3.表示空类型(或称无类型)的保留字是_________。 4.若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是_________。 5.一个C语言程序的执行起点是__________。 6. 可以将被调函数中获得的值返回给主调函数的语句是__________。 7.以下程序的输出结果是______。 int fun(int x) { static int t=0; return(t+=x); } main() { int s,i; for(i=1;i<=5;i++) s=fun(i); printf(\8.以下程序的输出结果是 。 #include { if (x/2>0) fun(x/2); printf(\main() { fun(6);printf(\ 9. 以下程序的输出结果是 。 int a=5; void fun(int b) { int a=10; a+=b; printf(\main() { int c=20; fun(c); a+=c; printf(\10. 以下程序的输出结果是______。 int fun (int x) { int p;if(x==1) return 2;else p=x-fun (x-2);return p;} main () { printf(“%d\\n”,fun (9));} 11.以下程序的输出结果是______。 int f(int n) { static int m=5; return ++m+n; } main() { int i; 12. 以下程序的输出结果是______。 int a=10; void f() { int a=30; printf (“%d,”,a); } main() { f ();printf (“%d\\n”,a); } 13. 以下程序的输出结果是______。 int a=5; fun(int i) { a+=2*i; return a; } main( ) { int a=10; printf(\14. 以下程序的输出结果是______。 f(int b) { static int y=3; return(b+y++); } for(i=0;i<3;i++) printf(〞=〞,f(i)); printf(〞\\n〞); } main() { int a=2,i,k; for(i=0;i<2;i++) printf(″%d\\n″,f(a++)); } 15. 以下程序的输出结果是______。 int funs(int n) { if(n= =1 ||n= =2) return 2; else return n+funs(n-1); } main() { int x=4; printf(″S=%d\\n″,funs(x)); } 16. 以下程序的输出结果是______。 int fx (int n) { int s; if (n==0) s=0; else s=n+fx (n-2); return s; } main() { printf (″%d\\n″,fx(8)); } 17. 以下程序的输出结果是______。 int fib(int n) { if(n==0||n==1)return 1; else return fib(n-1)+fib(n-2); } main() { int i; for(i=0; i<=4;i++)printf(″=″,fib(i)); printf(″\\n″); } 18. 以下程序的输出结果是______。 int f(int n) { static int a=0; int b=0; a+=n; b+=a; return b; } main () { printf(″%d\\n″,f(5)); printf(″%d\\n″,f(10)); } 19. 以下程序的输出结果是______。 int fm(int a,int b) { if(b==1)return a; else return a+fm(a,b-1); } main() { printf(〞%d\\n〞,fm(4,3));} 20. 以下程序的输出结果是______。 int a=100; s() { static int a=20; a++; printf(″%d\\n″,a); } main() { int i; for(i=1;i<=3;i++) {a++; printf(″%d,″,a); s();} } 21.以下程序的输出结果是______。 int z=5; int f ( ) { static int x=2; int y=5; x=x+2; z=z+5; y=y+z; printf (″==\\n″, x, z); } main ( ) { static int x=10; int y; y=z; printf (″==\\n″, x, z); f ( ); printf (″==\\n″, x, z); f ( ); } 22. 以下程序的输出结果是______。 fun ( ) { int y=1; static int z=4; z ++; ++ y; return (y*z); } main ( ) { int i; for (i=1; i<3; i++) printf ("=\\n",fun ( )); } 23. 以下程序的输出结果是______。 mian( ) { int i; for(i=1;i<3;i++) f(i); } f (int j) { static int a=100; int k=1; ++k; printf(″%d\\n″, j+a+k); a-=2; } 三、程序填空 1. 计算并输出1!+2!+3!+4!+5!的值。 int f (int a) { static int c=1;c=c*a; return_____; } main () { int i,k; k=_________; for (i=2;i<=5;i++) k+=f(________); printf (“%d\n”,k);} 2.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0, 1, 2, ??, 10时各阶乘的值。 计算公式: n!= long fac (int n) { if ( ) return (1); else return ________; } main ( ) { int m; long int fa; for (m=0; m<=10; m++) {________; printf (″%d!=\\n″, m, fa); } } 3. 输入n(n≥1), 计算1+(1+2)+(1+2+3)+??.+(1+2+??+n)的值。 main ( ) { int i,n; long sum=0; long cal (int); scanf (″%d″,&n); for (i=1;i<=n;i++) sum =sum+cal( );