2009-2010学年度《计算机C语言程序设计》复习参考资料
习题五 函数
一、选择题
1、以下说法正确的是 C
A) C语言程序总是从第一个定义的函数开始执行
B) 在C语言程序中,要调用的函数必须在main函数中定义 C) C语言函数总是从main函数开始执行
D) C语言程序中的main函数必须放在程序的开始部分 2、 以下函数的类型是 C
A)与参数x的类型相同 B)void类型 C)int类型 D)无法确定 fff(float x)
{ printf(“%d\\n”,x*x);}
3、以下函数的调用语句中,含有的实参个数是 B A)1 B)2 C)4 D)5 Flunc( (exp1,exp2),(exp3,exp4,exp5)); 4、以下程序的输出结果是 C A)11 B)20 C)21 D)31 flunc(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); }
5、以下程序的输出结果是 B
a) 1 2 3 4 b) 4 3 2 1 c) 0 0 0 0 d) 4 4 4 4 main()
{ int a[]={1,2,3,4},i.,x=0;
第16页 共38页
2009-2010学年度《计算机C语言程序设计》复习参考资料
for(I=0; I<4;I++){sub(a,&x); printf(“%d”,x);} printf(“\\n”); }
sub(int*s,int *y) { static int t=3; *y=s[t]; t--; }
7、以下程序的输出结果是 A
a) 8,17 b)8,16 c)8,20 main()
{ int k=4, m=1,p; p=func(k,m); ptintf(“%d,”,p); p=func(k,m); printf(“%d\\n”,p); }
func( int a,int b) { static int m,I=2; I+=m+1; m=I+a+b; return(m); }
8、以下程序的输出结果是 C
a) 34756 b)23445 c)35745 void fun(int *s) { static int j=0; do
s[j]+=s[j+1]; while(++j<2); } main()
{ int k,a[10]={1,2,3,4,5}; for (k=1; k<3;k++) fun(a);
d)8,8 d)12345 第17页 共38页
2009-2010学年度《计算机C语言程序设计》复习参考资料
for(k=0;k<5;k++) printf(“%d\\n?,a[k]); }
9、以下程序的输出结果是 D
a) f(int a) { int b=0; static int c=3; a=c++,b++; return(a); } main() { int a=2,I,k;
for(I=0;I<2;I++) k+f(a++); printf(“%d\\n”,k); }
10、以下程序的输出结果是 B
a)
1 b)2 c)7 d)10
3 b)6 c) 5 d) 4
int m=13; int fun2(int x,int y) { int m=3; return(x*y-m); } main()
{ int a=7,b=5;
printf(“%d\\n”,fun2(a,b)/m); }
11、C语言中,形参的缺省的存储类说明是 A a) auto b)static c)register d)exterm 12、以下叙述不正确的是 C a) b) c)
一个变量的作用域完全取决于变量定义语句的位置; 全局变量可以在函数以外的任何地方定义;
局部变量的“生存期”只限于本次函数调用,因此不可能将其运算结果保存到下一次调用;
第18页 共38页
2009-2010学年度《计算机C语言程序设计》复习参考资料
d)
一个变量说明为static存储类是为了限制其他编译单位的调用;
二、填空题
1、以下程序输出正确的是 9.000000
double sub(double x,double y,double z) { y-=1.0; z=z+x; return z; } main()
{ double a=2.5,b=9.0; printf(“%f\\n”,sub(b-a,a,a)); }
2、 以下程序输出正确的是 4
fun1(int a , int b) { int c;
a+=a; b+=b; c=fun2(a,b); return c*c; }
fun2(int a ,int b) { int c; c=a*b%3; return c; } main()
{ int x=11,y=19;
printf(“%d\\n”,fun1(x,y)); }
3、 以下函数用以求x的y次方。请填空。 double fun(double x,int y) { int I; double z; for(I=1;I 第19页 共38页 2009-2010学年度《计算机C语言程序设计》复习参考资料 return z; } 4、以下程序的输出结果是 main() 2,5,1 { int a=3,b=2,c=1; 2,3,-2 c-=++b; b*=a+c; { int b=5,c=12; c/=b*2; a-=c; printf(“%d,%d,%d\\n”,a,b,c); a+=--c; } printf(“%d,%d,%d\\n”,a,b,c); } 5、以下程序的输出结果是 2468 void fun() { static int a; a+=2; printf(“%d”,a); } main() { int cc; for (cc=1;cc<=4;cc++)fun(); printf(“\\n”); } 第20页 共38页