![]() ![]() |
|
二级C语言教程章节测试7.函数 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 13:57:54 文章录入:杜斌 责任编辑:杜斌 | |
|
|
(1)以下关于函数的叙述中正确的是_____。 A)每个函数都可以被其它函数调用(包括main函数) B)每个函数都可以被单独编译 C)每个函数都可以单独运行 D)在一个函数内部可以定义另一个函数 (2)设函数fun的定义形式为 void fun(char ch, float x ) { … } 则以下对函数fun的调用语句中,正确的是_____。 A)fun("abc",3.0); B)t=fun('D',16.5); C)fun('65',2.8); D)fun(32,32); (3)有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf("%d,%d%d\n",e,f,g); } 程序运行后的输出结果是_____。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 (4)有以下程序 #define P 3 #define F(int x) { return (P*x*x);} main() { printf("%d\n",F(3+5)); } 程序运行后的输出结果是_____。 A)192 B)29 C)25 D)编译出错 (5) 若程序中定义了以下函数 double myadd(double a,double B) { return (a+B) ;} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是_____。 A) double myadd(double a,B) ; B) double myadd(double,double); C) double myadd(double b,double A) ; D) double myadd(double x,double y); (6) 有以下程序 char fun(char x , char y) { if(x<y) return x; return y; } main( ) { int a=’9’,b=’8’,c=’7’; printf(“%c\n”,fun(fun(a,B) ,fun(b,C) )); } 程序的执行结果是_____。 A) 函数调用出错 B)8 C)9 D)7 (7) 有以下程序 void f(int v , int w) { int t; t=v;v=w;w=t; } main( ) { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\n”,x,y,z); } 执行后输出结果是_____。 A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1 (8) 若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是_____。 A) 调用可以作为独立的语句存在 B) 调用可以作为一个函数的实参 C) 调用可以出现在表达式中 D) 调用可以作为一个函数的形参 (9) 有以下函数定义: void fun( int n, double x) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_____。 A) fun(int y,double m); B) k=fun(10,12.5); C) fun(x,n); D) vold fun(n,x); (10) 有以下程序 fun(int a, int b) { if(a>b) return(a); else return(b); } main() { int x=3, y=8, z=6, r; r=fun (fun(x,y), 2*z); printf("%d\n", r); } 程序运行后的输出结果是_____。 A) 3 B) 6 C) 8 D) 12
(11) 在一个C程序中_____。 A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 (12) 有以下程序 int fl(int x,int y) { return x>y?x:y; } int f2(int x,int y) { return x>y?y:x; } main() { int a=4,b=3,c=5,d,e,f; d=f1(a,b); d=f1(d,c); e=f2(a,b); e=f2(e,c); f=a+b+c-d-e; printf("%d,%d,%d\n",d,f,e); } 执行后输出结果是_____。 A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4 (13) 有如下程序 void f(int x,int y) { int t; if(x<y){ t=x; x=y; y=t; } } main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行后输出结果是_____。 A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5 (14) C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是_____。 A) void B) int C) float D) double (15) 有以下程序 float fun(int x,int y) { return(x+y); } main() { int a=2,b=5,c=8; printf(“%3.0f\n”,fun(int)fun(a+c,b),a-c)); } 程序运行后的输出结果是_____。 A) 编译出错 B) 9 C) 21 D) 9.0 (16) 若有以下程序 #include <stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是_____。 A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明 D) 函数f无返回值,所以可用void将其类型定义为无值型 (17) 以下函数值的类型是_____。 fun ( float x ) { float y; y= 3*x-4; return y; } A) int B) 不确定 C) void D) float (18) 以下所列的各函数首部中,正确的是_____。 A) void play(var :Integer,var b:Integer) B) void play(int a,b) C) void play(int a,int b) D) Sub play(a as integer,b as integer) (19) 以下程序的输出结果是_____。 A) 0 B) 29 C) 31 D) 无定值 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(“%d”,a); } (20) 有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是_____。 A) 3 B) 4 C) 5 D) 有语法错
(21) 有如下程序 int runc(int a,int b) { return(a+b);} main0 { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\d\n”,r); } 该程序的输出的结果是_____。 A) 12 B) 13 C) 14 D) 15 (22) 以下叙述中不正确的是_____。 A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效 (23) 有以下程序 viod fun (int a,int b,int c) { a=456; b=567; c=678;} main() { int x=10, y=20,z=30; fun (x,y,z); printf("%d,/%d\n",c,d); } 输出结果是_____。 A)30,20,10 B)10,20,30 C) 456,567,678 D) 678,567,456 (24) 有以下程序 #include "atdio.h" int abc(int u,intv); main () { int a=24,b=16,c; c=abc(a,b); printf('%d\n",c); } nt abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w } return u; } 输出结果是_____。 A) 6 B) 7 C) 8 D) 9 (25) 以下说法中正确的是_____。 A) C语言程序总是从第一个的函数开始执行 B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分 (26) 请读程序: #include<stdio.h> func( int a, int b) { int c; c=a+b; return c; } main() { int x=6, y=7, z=8, r; r=func( x--,y==,x+y),z--); printf("%d\n",r); } 上面程序的输出结果是_____。 A) 11 B) 20 C) 21 D) 31
二、填空题 (1)有以下程序 int sub(int n) { return (n/10+n%10); } main() { int x,y; scanf("%d",&x); y=sub(sub(sub(x))); printf("%d\n",y); } 若运行时输入:1234<回车>,程序的输出结果是 【1】 。 (2) 通过函数求f(x)的累加和,其中f(x)=x2+1 main() { printf("The sum=%d\n",SunFun(10)); } SunFun(int n) { int x,s=0; for(x=0;x<=n;x++) s+=F( 【2】 ); return s; } F( int x) { return 【3】 );} (3) 函数fun的功能是计算xn double fun(double x,int n) { int i; double y=1; for(i=1;i<=n;i++) y=y*x; return y; } 主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【4】 。 (4) 以下sum函数的功能是计算下列级数之和。 S=1+x+x2/2!+x3/3!+........+xn/n! 请给函数中的各变量正确赋初值。 double sum( double x, int n ) { int i; double a,b,s; 【5】 for( i=1;i<=n;i++) { a=a*x; b=b*i; s=s+a/b; } return s; (5) 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。 int fun(int n) { int n=0,f=1, i; for (i=1; i<=n; i++) { m+=i*f; f= 【6】 ; } return m; } main() { printf("m=%d\n", 【7】 );} (6) 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 【8】(double,double); main() { double x,y; scanf("%1f%1f",&x,&y); printf("%1f\n",max(x,y)); } double max(double a,double b) { return (a>b ? a:b) :} (7) 若有以下程序 int f(int x,int y) { return(y-x)*x; } main() { int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5)); printf("%d\n",d); } 执行后输出的结果是【9】。 (8) 以下程序运行后的输出结果是 【10】 。 void fun(int x,int y) { x=x+y;y=x-y;x=x-y; printf(“%d,%d,”,x,y); } main() { int x=2,y=3; fun(x,y); printf(“%d,%d\n”,x,y); } (9) 函数pi的功能是根据以下近似公式求π值: (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n) 现在请你在下面的函数中填空,完成求π的功能。 #include “math.h” double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++)s=s+ [11] ; return(sqrt(6*s)); } (10) 下面程序的输出是 【12】 。 unsigned fun6( unsigned num) { unsigned k=1; do { k*=num%10; num/=10; } while(num); return(k);} main() { unsigned n=26; printf("%d\n", fun6(n)); } (11) 下面pi函数的功能是根据以下的公式,返回满足精度ε要求的π值。请填空。 double pi(double eps) { double s=0.0, t=1.0; int n; for( 【13】 ; t>eps; n++) { s+=t; t=n*t/(2*n+1);} return(2.0 * 【14】 );}
答案: 一、选择题 1) B 2) D 3) A 4) D 5) A 6) D 7) C 8) D 9) C 10) D 11) B 12) C 13) D 14) B 15) B 16) C 17) A 18) C 19) C 20) A 21) D 22) D 23) A 24) C 25) C 26) C 二、填空题 (1) 10 (2) x (3) x*x+1 (4) fun(a,4)+fun(b,4)-fun(a+b,3); (5) a=1.0;b=1.0;s=1.0; (6) -f (7) fun(10) (8) double max (9) 9 (10) 3,2,2,3 (11) 1.0/(i*i) (12) 12 (13) n=1 (14) s |
|
![]() ![]() |