第六单元 函 数
一、 选择题
1. 在C语言中,当函数调用时 。
A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用存储单元
C. 可以由用户指定实参和形参是否共用存储单元 D. 由系统自动确定实参和形参是否共用存储单元 2. 以下函数调用语句中实参的个数为 。
exce((v1,v2),(v3,v4,v5),v6);
A. 3
B. 4
C. 5
D. 6
3. 如果在一个函数的复合语句中定义了一个变量,则该变量 。
A. 只在该符合语句中有效,在该符合语句外无效 B. 在该函数中任何位置都有效 C. 在本程序的原文件范围内均有效
D. 此定义方法错误,其变量为非法变量
4. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。A. float型 B. int型 C. long型 D. double型 5. C语言规定,函数返回值的类型是由 。
A. return语句中的表达式类型所决定 B. 调用该函数时的主调函数类型所决定 C. 调用该函数时系统临时决定
D. 在定义该函数时所指定的函数类型决定 6. 在C语言程序中,以下描述正确的是 。
A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用均不可以嵌套 D. 函数的定义和函数的调用均可以嵌套 7. 以下叙述中正确的是 。
A. 全局变量的作用域一定比局部变量的作用域范围大
B. 静态(static)类别变量的生存期贯穿于整个程序的运行期间 C. 函数的形参都属于全局变量
28
D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 8. 以下程序的运行结果是: #include
{ int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++){
sub(a,x);printf("%d",x);} printf("\n"); }
A)1234 B)432l
C)0000
D)4444
9. 以下程序的运行结果是: main()
{ int w=5;fun(w);printf("\n");} fun(int k)
{ if(k>O) fun(k-1); printf(" %d",k); }
A)5 4 3 2 l
B)0 1 2 3 4 5
C)1 2 3 4 5
D)5 4 3 2 1 0
10. 以下所列的各函数首部中,正确的是_______。 A)void play(vat a: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)
11. 当调用函数时,实参是一个数组名,则向函数传送的是_______。
A)数组的长度
B)数组的首地址 C)数组每一个元素的地址 D)数组每个元素中的值 12. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。A)地址传递
B)单向值传递
C)由实参传给形,再由形参传回实参 D)传递方式由用户指定
13. 以下函数值的类型是_______。 fun(float x) { float y; y=3*x-4; return y;
29
} A)int
B)不确定
C)void
D)float
二、 读程序写结果 1. 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(\ }
2. int x;
main() { x=5; cude();
printf(\ } cude()
{ x=x*x*x; }
3. #include
long fun(int n)
{ long s;
if(n==1||n==2) s=2; else
s=n+fun(n-1);
30
return s; }
main()
{ printf(\
}
4. main() { int i;
for(i=0;i<2;i++) add();
} add() { int x=0;
static int y=0; printf(\x++; y=y+2;
}
5. main()
{ int k=4,m=1,p;
p=func(k,m); printf(\p=func(k,m); printf(\
}
func(int a,int b) { static int m=0,i=2;
i+=m+1; m=i+a+b; return m;
}
6. int t(int x,int y,int cp,int dp)
{ cp=x*x+y*y; dp=x*x-y*y; } main()
31