当前位置:文档之家› 第7章函数练习题(含答案)

第7章函数练习题(含答案)

第7章函数练习题(含答案)
第7章函数练习题(含答案)

第7章函数练习题(含答案)

函数练习题

1、在C语言中,正确的说法是( A )

A.函数内部和外部定义的变量同名是合法的

B.只要形参和实参都是变量,那么形实结合一定是地址传递

C.变量的定义和声明(也称说明)功能是相同的

D.没有return 的函数就失去了返回功能

2. 若程序中定义了以下函数

double myadd(double a,double B) { return (a+B) ;}

并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( A )

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); 3. 有以下程序

void f(int v , int w) { int t;

t=v;v=w;w=t; }

int 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); return 0; }

执行后输出结果是( C ) A) 1,2,3 B) 3,1,2 C)

1,3,2 D) 2,3,1

4. 以下叙述正确的是( C )

A) c程序由主函数构成 B) c程序由函数和过程构成 C)

c程序由函数构成

D) 在c程序中,无论是整形值还是实型值,只要在允许的范

围内,都能准确无误的表示

5. 构成c语言程序的基本结构单位是( A )

A)函数 B)过程 C)复合语句

D)语句

6. C语言规定:在一个源程序中,main函数的位置( C )。

A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以

任意 D)必须在最后

7.在C语言中,下列函数经常与getchar()组合起来使用的

函数是( D )

A)scanf() B)strcpy() C)puts() D)putchar() 8.C语言自定义函数的返回值的类型是由( B )决定的。

A)return语句中的表达式类型 B)定义函数时,指定函

数值类型 C)调用函数时临时确定的 D)无法确定

9.函数的实参为数组名时,形参与实参结合的传递方式为

地址传递。

10.int func(int n) {

if (n= =0)return 0;

else if (n= =1) return 1;

else return n*n+func(n-2); }

int main() {

printf(\ return 0; }

以下程序的输出结果是: 20 35

11.以下程序的输出结果是( 6 )

int add(int a, int b) { return (a+b);} int main()

{ int x=1,y=2,z=3,s; s=add(add(x,y),z);

printf(“%d”,s); return 0; }

12. 以下程序中,主函数调用了LineMax函数,实现在N行M 列的二维数组中,找出每一行上的最大值。请填空。 #define N 3 #define M 4

void LineMax(int x[N][M]) { int i,j,p;

for ( i=0;i<N; i++ ) { p=0;

for ( j=1;j<M; j++ )

if(x[i][p]<x[i][j]) 【1】 p=j ;

printf(″The max value in line is %d\\n″, 【2】

x[i][p] ); } } main()

{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1}; 【3】 LineMax(x) ; return 0; }

13. 若用数组名作为函数调用时的实参,则实际上传递给形参的是。

( A )

A) 数组首地址 B) 数组的第一个元素值 C) 数组中全部元素的值 D) 数组元素的个数

14.在C语言中,函数的数据类型是指 A 。

A) 函数返回值的数据类型 B) 函数形参的数据类型 C) 调用该函数时的实参的数据类型 D) 任意指定的数据类型

15.定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。 C

A) swapa(int x, int y) B) swapb(int *x, int *y) { int temp;

{ int temp;

temp=x;x=y;y=temp;

temp=x;x=y;y=temp; } }

C) swapc(int *x, int *y) D) swapd(int *x, int *y) { int temp;

{ int *temp;

temp=*x;*x=*y;*y=temp;

temp=x;x=y;y=temp; } }

16.一个函数内有数据类型说明语句如下: double x, y, z(10);

关于此语句的解释,下面说法正确的是____。 D A) z是一个数组,它有10个元素。

B) z是一个函数,小括号内的10是它的实参的值。 C) z是一个变量,小括号内的10是它的初值。 D) 语句中有错误。

17.已知函数定义如下: float fun1(int x, int y)

{ float z;

z=(float)x/y; return(z); }

主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。 D

A) printf(\;

B) printf(\; C) printf(\;

D) 调用时发生错误

18.下面函数的功能是____。B a(s1,s2)

char s1[ ],s2[ ];

{ while(s2++=s1++) ; }

A) 字符串比较 B) 字符串复制 C) 字符串连接 D) 字符串反向

19.已知:int a, *y=&a;则下列函数调用中错误的是

( D )。 A) scanf(\; B) scanf(\; C) printf(\; D) printf(\;

20.下面程序的输出结果是____。B #include int f(char *s) { char *p=s; while(*p!='\\0') p++;

return(p-s); }

int main()

{ printf(\; return 0; }

A) 3 B) 6 C) 8 D) 0

21.下面程序的输出结果是____。C #include int

func(int a, int b) { int c; c=a+b; return(c); } int main()

{ int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--); printf(\; return 0; }

A) 11 B) 20 C) 21 D) 31

22.下面程序的输出结果是____。

#include int k=1; int main( ) { int i=4; fun(i);

printf (\,%d\,i,k);/* ① */ return 0; }

int fun(int m) { m+=k;k+=m; { char k='B';

printf(\,k-'A');/* ② */ }

printf(\,%d\,m,k);/* ③ */ }

① A) 4,1 B) 5,6 C) 4,6 D) A,B,C参考答案都不对② A) 1 B) -59 C) -64 D) A,B,C参考答案都不对③ A) 5,66 B) 1,66 C) 5,6 D) A,B,C参考答案都不对

23.下面程序的输出结果是____。C #include void

fun(int n, int *s) { int f1, f2; if(n==1||n==2) *s=1;else

{ fun(n-1, &f1); fun(n-2, &f2); *s=f1+f2; } }

int main( ) { int x;

fun(6, &x);

printf(\; return 0; }

A) 6 B) 7 C) 8 D) 9

24.下面程序的输出结果是____。B int w=3; int main() { int w=10;

printf(\;

( C ) ( A ) ( C )

相关主题
文本预览
相关文档 最新文档