C语言习题集及答案 下载本文

第六单元 函 数

一、 选择题

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 void sub(int s[],int y) { static int t=3; y=s[t];t--; } main()

{ 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