C语言基础知识习题 下载本文

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 fun(int x)

{ 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( );