C语言习题集合(函数)_第1页
C语言习题集合(函数)_第2页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章函数 5. 1 选择题 1 . C 语言是由()构成。 A. 主程序和子程序 B. 主函数和若干子函数 C. 一个主函数和一个其他函数 D. 主函数和子程序 2 .以下说法中正确的是()。 A. C 语言程序总是从第一个的函数开始执行 B. 在 C 语言程序中,要调用的函数必须在 main()函数中定义 C. C 语言程序总是从 main()函数开始执行 D. C 语言程序中的 main()函数必须放在程序的开始部分 3 .以下对 C 语言函数的有关描述中,正确的是( )。 A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C 函数既可以嵌套定义又可以递归调用 C

2、. 函数必须有返回值,否则不能使用函数 D. C 程序中有调用关系的所有函数必须放在同一个源程序文件中 4 . C 语言程序中,当函数调用时( )。 A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单兀 D. 计算机系统自动确定是否共用存储单元 5.关于 return语句,下列正确的说法是( )。 A. 在主函数和其他函数中均要出现 B. 必须在每个函数中出现 C. 可以在同一个函数中出现多次 D. 只能在除主函数之外的函数中出现一次 6 . 一个函数返回值的类型是由( )决定的。 A. return语句中表达式的类型 B. 在调用函数

3、时临时指定 C. 定义函数时指定的函数类型 D. 调用该函数的主调函数的类型 7 .在 C 语言的函数中,下列正确的说法是( )。 A. 必须有形参 B. 形参必须是变量名 C. 可以有也可以没有形参 D. 数组名不能作形参 8 .以下描述正确的是()。 A. 函数调用可以出现在执行语句或表达式中 B. 函数调用不能作为一个函数的实参 C. 函数调用可以作为一个函数的形参 D. 以上都不正确 9 .在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( ) 。C. 由实参传给形参,再由形参传回实参 D. 传递方式由用户指定 10 当调用函数时,实参是一个数组名,则向函数传送的是(

4、 )。 A. 数组的长度 B. 数组的首地址 C. 数组每一个元素的地址 D. 数组每个元素中的值 11 .如果在一个函数的复合语句中定义了一个变量, 则该变量( )。 A. 只在该复合语句中有效,在该复合语句外无效 B. 在该函数中任何位置都有效 C. 在本程序的源文件范围内均有效 D. 此定义方法错误,其变量为非法变量 12 .下列说法不正确的是( )。 A. 主函数 main中定义的变量在整个文件或程序中有效 B. 不同函数中,可以使用相同名字的变量 C. 形式参数是局部变量 D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 13 在一个源程序文件中定义的全局

5、变量的有效范围是( )。 A. 本源程序文件的全部范围 B. 一个 C 程序的所有源程序文件 C. 函数内全部范围 D. 从定义变量的位置开始到源程序文件结束 A.地址传递 B.单向值传递 14 .以下叙述中不正确的是( )。 A. 在不同的函数中可以使用相同名字的变量21 .在 C 语言中,形参的缺省存储类是( )。 17 .以下叙述中不正确的是( )。 A. 函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B. 在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C. 外部变量的隐含类别是自动存储类别。 D. 函数形参可以说明为 register 变量。 18 .以下只有在使用时

6、才为该类型变量分配内存的存储类说明是( )。 A. auto 禾口 static B. auto 禾口 register C. register 禾口 static D. extern 禾口 register 19 . C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( ) 。 A. void B. i nt C. float D. double 20 .在 C 语言屮, 函数的隐含存储类别是( )。 A. auto B. static C. extern D.无存储类别 B.函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个函数内的复合语句

7、中定义的变量在本函数范围内有效 15 如果要限制一个变量只能为本文件所使用,必须通过( )来实现。 A.外部变量说明 B.静态局部变量 C.静态外部变量 D.局部变量说明 16 .下列哪种数据不存放在动态存储区中( ) 。 A.函数形参变量 B.局部自动变量 C.函数调用时的现场保护和返回地址 D.局部静态变量 22 若有以下程序 #in elude void f(i nt n); main () void f(int n); f(5); void f(i nt n) prin tf(%dn, n); 则以下叙述中不正确的是( )。 A. 若只在主函数中对函数 f 进行说明,则只能在主函数中正

8、确调用函数 f B. 若在主函数前对函数 f 进行说明,则在主函数和其后的其它函数中都可以正确调用 函数 f C. 对于以上程序,编译时系统会提示出错信息:提示对 f 函数重复说明 D. 函数 f 无返回值,所以可用 void 将其类型定义为无值型 23 以下所列的各函数首部中,正确的是( )。 A. void play(var :ln teger,var b:l nteger) B. void play(i nt a,b)A. auto B. register C. static D. exter C. void play(i nt a,i nt b) D. Sub play(a as in

9、 teger,b as in teger) 24 有如下函数调用语句 fun c(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是( A. 3 B. 4 C. 5 25 .若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b); 在此函数调用语句中实参的 个数是()。 A.3 B.4 C.5 26 以下函数值的类型是()。 fun (float x) float y; y= 3*x-4; return y; A. i nt B.不确定 C. void D. float 27 .下列函数定义不正确的是( )。 A. i nt

10、max() B. int max(x,y) i nt x,y, z; int x,y; z=xy?x:y; int 乙 z=xy?x:y; )。 D.有语法错 D.6 prin tf(%d,a); return(z); C. int max(x,y) int x,y,z; z=xy?x:y; return(z); 28 下列程序的运行结果是( )。 main () int i=3; prin tf(%d,%d,%dn,i,i+,i+); A. 5,5,4 B. 3,4,5 29 以下程序的输出结果是( )。 fun (i nt x, int y, int z) z=x*x+y*y; main

11、() int a=31; fun (5,2,a); D. i nt max() C. 3,3,4 D. 5,4,3 30 .下列程序执行后的输出结果是( )。 void fun c1(i nt i); void fun c2(i nt i); char st=hello,frie nd!; void fun c1(i nt i) prin tf(%c,sti); if(i3)i+=2;fu nc2(i); void fun c2(i nt i) prin tf(%c,sti); if(i3)i+=2;fu nc1(i); main () int i=0; fun c1(i); prin tf(

12、n); A. 0 B. 29 C. 31 D.无定值 A. hello B. hel C. hlo D. hlm 31 有如下程序 int fun c(i nt a,i nt b) retur n( a+b); main () int x=2,y=5,z=8,r; r=func(fun c(x,y),z); prin tf(%dn,r); 该程序的输出的结果是()。 A. 12 B. 13 C. 14 D. 15 32 有以下程序 float fun (i nt x,i nt y) return(x+y); main () int a=2,b=5,c=8; prin tf(%3.0fn,fu

13、n(i nt)fu n(a+c,b),a-c); 程序运行后的输出结果是( )。 A.编译出错 B. 9 C. 21 D. 9.0 33 有以下程序 #in elude stdio.h int abc(i nt u,i nt v); main () int a=24,b=16,c; c=abc(a,b); prin tf(%dn,c); int abc(i nt u,i nt v) int w; while(v) w=u%v; u=v; v=w return u; 输出结果是()。 A. 6 B. 7 34 阅读以下函数: fun( char s,char t)C. 8 D. 9 int i=

14、-1; while(+i,si=ti&si!= 0 ); return(si= 0 &ti= 0 ); 以上函数的功能是()。 A.比较串 s 和 t 的长度 C.比较串 s 和 t 是否相等 35 以下程序的输出结果是( )。 f( int b , i nt m, i nt n) int i,s=0; for(i=m;i n ;i=i+2) s=s+bi; return s; main () int x, a =1,2,3,4,5,6,7,8,9; x=f(a,3,7); prin tf(%dn,x); A. 10 B. 18 B. 比较串 s 和 t D. 将串 t 赋给串

15、 的大小 s C. 8 D. 15 36 以下程序中函数 reverse 的功能是将 a 所指数组中的内容进行逆置。 int c; void reverse(i nt a ,i nt n) int i,t; for(i=0;i n/2;i+) t=ai; ai=a n-1-i;a n-1-i=t; main () int b10=1,2,3,4,5,6,7,8,9,10; int i,s=0; reverse(b,8); for(i=6;i10;i+) s+=bi; prin tf(%dn,s); 程序运行后的输出结果是( )。 A. 22 B. 10 C.34 37 .请读程序: #in c

16、lude func( int a, int b) D. 30 c=a+b; return c; main () int x=6, y=7, z=8, r; r=func( (x-,y-,x+y),z-); prin tf(%dn,r); 上面程序的输出结果是()。 A. 11 B. 19 C.21 38 .请读程序: #in clude f(in b, i nt n) int i, r; r=1; for(i=0; i=n; i+) r=r*bi; return r; main ()D. 31 int x, a= 234,5,6,7,8,9; x=f(a, 3); prin tf(%dn,x)

17、; 上面程序的输出结果是()。 A. 720 B.120 C.24 下面程序的输出是()。 main () int t=1; fun(fun( t); fun (i nt h) static int a3=1,2,3; int k; for(k=0;k3;k+) ak+=ak-h; for(k=0;k2) return(fib( n-1)+fib( n-2); else return(2); main () prin tf(%dn,fib (3); 该程序的输出结果是()。 A. 2 B. 4 C. 6 以下程序的输出结果是( )。 long fun( int n) long s; if(n=

18、1 | n=2) s=2; else s=n-fun(n-1); return s; D. 6 D. 1,3,5, 1,5,9, 1,3,5, 0,4,8, -1,3,7, D. 8 41 main () printf(%ldn, fun(3); A. 1 B. 2 C. 3 D. 4 42 以下程序的输出结果是( )。 fun c(i nt x) in t p; if(x=0|x=1) return (3); p=x-fu nc(x_2); return p; main () prin tf(%dn,fu nc(9); A. 7 B. 2 C. 0 D. 3 43 .有以下程序 int f(

19、i nt n) if(n=1) return 1; else return f(n-1)+1; 45 以下程序的输出结果是( )。 mai n() int i,j=O; for(i=1;i3;i+) j+=f(i); prin tf(%dn,j); 程序运行后的输出结果是( )。 A. 4 B. 3 C. 2 D. 1 44 .下面程序的输出是()。 int w=3; main () int w=10; prin tf(%dn,fu n( 5)*w); fun (i nt k) if(k=0) return w; return(fu n(k_1)*k); A.360 B.3600 C.1080

20、 D.1200a=100; b=200; #in elude stdio.h int i=5; main () int i=3; int i=10;i+; f1(); i+=1; prin tf(%dn,i); int f1() i=i+1; return(i); A.7 B.4 46 以下程序的输出结果是( )。 int a, b; void fun() C.12 D.6 mai n() int a=5, b=7; fun (); prin tf(%d%dn, a,b); A. 100200 B.57 47 以下程序输出结果是()。 main () int i; for(i=0;i2;i+)

21、 add(); add() int x=0;static int y=0; prin tf(%d,%dn,x,y); x+;y=y+2; A. 0,0 B. 0,0 0,0 0,2 48 设有以下函数:C. 200100 D. 75 C. 0,0 D. 0,0 1,0 1,2 int i; f (int a) int b=0; static int c = 3; b+; C+; retur n( a+b+c); 如果在下面的程序中调用该函数,则输出结果是( )。 main () int a = 2, i; for(i=0;i3;i+) prin tf(%dn,f(a); A. 7 B. 7 C

22、. 7 8 9 10 9 11 13 D. 7 7 7 static int a=3; for (i=1;ix;i+) in cre(); in cre() static int x=1; x*=x+1; prin tf( %d,x); A. 3 3 B. 2 2 C. 2 6 D. 2 5 50 .有以下程序 int a=3; main () int s=0; int a=5; s+=a+; s+=a+;pri ntf(%dn,s); 49 以下程序的输出的结果是( ) 。 int x=3; mai n() static int a=3; 程序运行后的输出结果是( )。 A. 8 B. 10

23、 C. 7 D. 11 51 .下面程序的输出是()。 fun 3(i nt x)int a=7, b=5; a+=x; return(a); main () int k=2, m=1, n; n=fu n3(k); n=fun 3(m); prin tf(%dn, n); A. 3 B. 4 52 .下面程序的输出是()。 int m=13; int fun 2(i nt x, int y) int m=3; return(x*y-m); main () prin tf(%dn,fu n2(a,b)/m);C. 6 D. 9 int d=5; A. 1 B. 2 C. 7 53 下列程序执行

24、后输出的结果是( )。 #in elude f(int a) int b=0; static c=3; a=c+,b+; return (a); mai n() int a=2,i,k; for(i=0;i2;i+) k=f(a+); prin tf(%dn,k); A. 3 B. 0 C. 5 54 下列程序执行后输出的结果是( )。 int d=1; fun (int p) d+=p+;D. 10 D. 4 int a=3; prin tf(%d,d); mai n() int a=3; fun( a); d+=a+; prin tf(%dn,d); A. 84 B. 96 C. 94 5

25、5 以下程序的输出结果是( )。 int d=1; fun(int p) static int d=5; d+=p; prin tf(%d ,d); return(d); mai n( ) prin tf(%d n ,fu n(a+fu n( d);D. 85 1.下面程序的输出结果是 _ 。 int t(i nt x,i nt y,i nt cp,i nt dp) cp=x*x+y*y; dp=x*x_y*y; mai n( ) int a=4,b=3,c=5,d=6; t(a,b,c,d); prin tf(%d %d n,c,d) ; 2 .下面程序运行后的输出结果是 _。 void f

26、un (i nt x,i nt y) x=x+y;y=x_y;x=x_y; prin tf(%d,%d,x,y);A. 6 9 9 B. 6 6 9 C. 6 15 15 D. 6 6 15 static int f=1; mai n() int x=2,y=3; fun (x,y); printf( “d,%dn ” ,x,y); 3 .下面程序的输出结果是 _ void fun() static int a=0; a+=2; prin tf(%d,a); main () int cc; for(cc=1;cc4;cc+) fun(); prin tf(n); 4 .下面程序输出的最后一个值

27、是 _。 int ff(int n) int p; f=f*n; return f; main () int i; for(i=1;i=5;i+) prin tf(%5d,ff(i); 5 .下面程序运行结果为 _ #in clude main () int i; for(i=0;i2;i+) as(); as() int lv=0; static int sv=0; prin tf(%d,%dn,lv,sv); lv+;sv+; return; 6 .下面程序的输出是 _ un sig ned fun6( un sig ned num) un sig ned k=1; do k*=n um%

28、10; num/=10; while( nu m); return(k); main () un sig ned n=26; printf(%dn, fun6(n); 7 .下面程序的输出结果是 _ #in clude fun( int x) if( x=0|x=1) return(3);int p; p=x-fu n( x_2); return p; main () prin tf( %dn, fun (9); 8 .下面程序的输出是 _ _ long fun 5(i nt n) long s; if(n=1)|( n=2) s=2; else s=n+fun5(n _1); return(

29、s); main () long x; x=fun 5(4); prin tf(%ldn,x);int k; 9 .下面程序的输出是 _ _ #define MAX 5 int aMAX,k; main () fun 1();fu n3(); fun 2(); fun 3(); prin tf(n); fun 1() for(k=0;kMAX;k+) ak=k+k; fun 2() int aMAX,k; for(k=0;k5;k+) ak=k; fun 3() for(k=0;kMAX;k+) pri ntf(%d,ak); 10 下面程序的运行结果是 _ #in elude main ()

30、 int k=4, m=1, p; p=fu nc(k,m); prin tf(%d,p); p=func(k,m); printf(%d n,p); fun c(i nt a, int b) static int m=0, i=2; i+=m+1; m=i+a+b; return m; 11 .下面程序运行结果是 _ main () int x=2, n=3; prin tf(%dn,power(x, n);if(nu mber0) p=power(x ,n _1)*x; else p=1; return(p); 12 .下面程序从键盘输入:5647,输出结果是 _ #in clude vo

31、id con vert(i nt n) int i; if(i=n/10)!=0) con vert(i); putchar(n%10+ 0); main () int nu mber; scan f(%d,&n umber); putchar( -);long fib(i nt g) nu mber= -nu mber; con vert (nu mber); 13 .输入 I am a student. #in clude main () int i,c ,num=0,word=0; char stri ng81; gets(stri ng); for(i=0;c=stri ngi

32、;i+) if(c=) word=0; else if(word=0) word=1; nu m+; prin tf(%d, num); 14 下面程序的运行结果是 #in clude switch(g) case O:retur n 0; case 1:case 2:retur n(1); F 面程序运行结果是 _ return(fib(g-1)+fib(g-2); main () long k; k=fib (5); prin tf(%dn,k); 15 设在主函数中有以下定义和函数调用语句,且 fun函数为 void 类型;请写出 fun函数 的首部 【1】。(要求形参名为 b。) ma

33、in () double s1022; int n;: fun (s); 16 以下程序中,主函数调用了 Lin eMax 函数,实现在 N 行 M 列的二维数组中,找出每 一行上的最大值。请填空。 #define N 3 #define M 4 void Lin eMax(i nt xNM) int i,j,p; for(i=0; iN;i+) P=0; for(j=1; jM;j+) if(xipxij) 【1 】; printf(The max value in line %d is %dn, i, 【2 】); main () int xNM=1,5,7,4,2,6,4,3,8,2,3

34、,1; 【3】; 17 .下面函数的功能是:求 x 的 y 次方,请填空。 double fun( double x, int y) int i; double z; for(i=1, z=x; iy;i+) z=z* 【1 】; return 乙 18 .若已定义:int a10, i;,以下 fun函数的功能是:在第一个循环中给前 10 个数组 元素依次赋 1、2、3、4、5、6、7、8、9、10 ;在第二个循环中使 a 数组前 10 个元 素中的值对称折叠,变成 1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a) int i; for(i=1; i=10; i+)

35、【1 】=i; for(i=0; i5; i+) 【2 】=ai; 1 1 1 19 .下面函数的功能是计算 S =1 ,请填空。 1*2 1*2*3 1*2*3*4* n double fun (i nt n) double s=0.0,fac=1.0; int i; for(i=1,ieps;n+) s+=t; t=n*t/(2* n+1); return(2.0* 【2 】); 21 .读下面的程序,填空完善程序。 main () scan f(%d%d, 【1 】);20 .下面函根据以下公式返回满足精度 e 要求的 p 的值。根据以下算法补 p =2* (1 1*3 1*2 1*2*

36、3 1* 3* 5 1* 3* 5*7 1* 2* 3* * n ) 1* 3* 5*7* 2n 1 int x; c=【2 】(a,b); prin tf(a=%d,b=%d,c=%dn,a,b,c); int max(x,y) 【3】; int 乙 if(xy) z=x; else z=y; 【4】; 22 .下面程序根据对 x的输入,求 1 到 x 的累加和。 float fun (i nt n) int i; float c; 【1】 for(i=1;i=n ;i+) c+=i; 【2】 main ()int i; char stri ng20,str320; scan f(%d, 【

37、3 】 ); prin tf(%fn,fu n(x); 23 .分别计算并输出 1 !, 2 ! , 3 !, 4 !和 5 !。 main () int i; for(i=1;i=5;i+) pri ntf(%d!=%dn,i, 【1 】 ); int fac(i nt n) 【2】f=1; f*=n; return(f); 24 求出数组中的最大、最小元素值以及所有元素的均值。 【1】; float average(i nt n, float array) int i; float sum; max=mi n=sum= 【2】; for(i=1;i n; i+) for(i=0;i3;i+

38、) gets( 【2】); sum+=arrayi; if(max arrayi) min=arrayi; return(sum/n); main () int i; float aver,score10; prin tf(i nput 10 score:n); for(i=0;i10;i+) sca nf(%f, 【3 】 ); aver=average(10,score); prin tf(max=%.2fnmi n=%.2fnaverage=%.2fn,max,mi n,aver); 25 .下面程序的功能是找出三个字符串中最大串,填空完善程序。 【1】 #in clude main (

39、) int i; char stri ng20,str320; if(strcmp(str0,str1)0) strcpy(stri ng,strO); else strcpy(stri ng,str1); if(strcmp(str2,stri ng) 【3 】)strcpy(stri ng,str2); printf(the largest string isn%sn,string); 26 .本程序的函数 ver 是使输入的字符串按反序存放,在主函数中输入和输出字符串。 main () char str100; scan f(%s,str); ver(str); prin tf(%sn,

40、str); ver(【1】) char t; int i,j; for(i=0,j=strle n(str);istrle n(str)/2;i+,j-) t=stri; 【2 】;【3 】; 27 用“起泡法”对输入的 10 个字符排序后按从小到大的次序输出。 #defi ne N 10 char strN; main () int i,flag; for(flag=1;flag=1;) sca nf(%s,str); flag=0; prin tf(n); sort(【1 】); for(i=0;iN;i+) pri ntf(%c,stri); prin tf(n); sort(char

41、strN) int i,j; char t; for( j=1;jN;j+) for(i=0;(istri+1) t=stri;【2 】;【3 】; 28 用选择法对数组进行由小到大排序。for(i=0;i10;i+) pri ntf(%6d,ai); void sort (n ,array) 【1】 int i,j,k,t; for(i=0;i n-1;i+) k=i; for(【2 】;jarrayj) k=j; t=arrayi; arrayi=arrayk; arrayk=t; main () int i,a10; prin tf(i nput the array: n); for(i

42、=0;i10;i+) sca nf(%d,&ai); 【3】 prin tf(the sorted array: n); 29 用递归方法求 n!。 float fac(i nt n) float f; if(n 0) pri ntf( n0,data error!); else if( 【1 】)f=1; else f=【2 】; return(f); main () int n=6; float y; prin tf(n); 【3】 prin tf(%d!=%5.0f, n, y); 30 程序调用 prime 函数,判断输入的一个整数是否为素数,是则打印 YES,否则打印 NO.

43、 #i nclude stdio.h main () int x; printf(输入一个整数给 x: ); scanf(%d, 【1 】 ); if(prime(x) pri ntf(YESn); else prin tf(NOn ”); prime(i nt a) int e,i,yes; yes=1;e=a/2; i=2; while(i=e) 【2 】) if(a% 【3 】 =0) yes=0; else i+; 【4】 5. 3 答案及部分解析 选择题答案 1.B 2.C 3.A 4.A 5.C 6.C 7.C 8.A 9.B 10.B 11.A 12.A 13.D 14.D 15.C 16.D 17.C 18.B 19.B 20.C 21.A 22.C 23.C 24.A 25.A 26.A 27.C 28.D 29.C 30.C 31.D 32.B 33.C 34.C 35.A 36.A 37.B 38.B 39.D 40.B 41.A 42.A 43.B 44.B 45.B 46.B 47.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论