C语言函数试题和答案解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六部分函数

一、单项选择题

1.C语言中的函数返回值的类型是由(D)决定

A.return语句中的表达式B.调用函数的主调函数

C.调用函数时临时 D.定义函数时所指定的函数类型2.下面不正确的描述是(B )。

A.调用函数时,实参可以是表达式

B.调用函数时,实参和形参可以共用内存单元

C.调用函数时,将形参分配内存单元

D.调用函数时,实参与形参的类型必须一致

3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是

( D )

A.地址传递 B.值传递

C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式

4.下面的函数调用语句中含有( A )个实参

int a,b,c;

int sum(int x1,int x2);

……

total=sum((a,b),c);

A.2 B.3 C.4 D.5

5.在C语言中( C )

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义和调用均不可以嵌套

C.函数的定义不可以嵌套,但是函数的调用可以嵌套

D.函数的定义和调用均可以嵌套

6.关于C语言中的return语句正确的是(C )

A.只能在主函数中出现

B.在每个函数中都必须出现

C.可以在一个函数中出现多次

D.只能在除主函数之外的函数中出现

7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是( D)

A. int a(float x[],int n)

B. int a(float *x,int n)

C. int a(float x[10],int n)

D.int a(float x,int n)

8.在C语言中,函数的数据类型是指( A )

A.函数返回值的数据类型

B. 函数形参的数据类型

C.调用该函数时的实参的数据类型

D. 任意指定的数据类型

9.已知如下定义的函数:

fun1(a)

{ printf("\n%d",a);

}

则该函数的数据类型是( C )

A.与参数a的类型相同

B.void型

C.整型

D.无法确定

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

A. swapa(int x,int y)

{ int temp;

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

}

B. swapb(int *x,int *y)

{ int temp;

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

}

C.swapc(int *x,int *y)

{ int temp;

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

}

D. swapd(int *x,int *y)

{ int *temp;

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

}

11.求一个角的正弦函数值的平方。能够实现此功能的函数是(B)

A.

sqofsina(x)

{ float x;

return(sin(x)*sin(x));

}

B. double sqofsinb(x)

{ float x;

return(sin((double)x)*sin((double)x));

}

C.double sqofsinc(x)

{ return(((sin(x)*sin(x));

}

D. sqofsind(x)

{ float x;

return(double(sin(x)*sin(x)));

12.已知函数定义如下:

float fun1(int x,int y)

{ float z;

z=(float)x/y;

return(z);

}

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

A.printf("%f",fun1(a,b));

B. printf("%f",fun1(&a,&b));

C. printf("%f",fun1(*a,*b));

D.调用时发生错误

13.下面函数的功能是( B )

a(s1,s2)

char s1[],s2[];

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

}

A.字符串比较

B.字符串复制

C. 字符串连接

D. 字符串反向

二、填空题

1.在C语言中,存储类型为局部和自动型的变量,只能在使用它们时才占用存储空间。

2.在一个源文件中定义的全局变量的作用域为整个源程序。

3.下面程序的执行结果是84

int d=1;

fun(int p)

{

int d=5;

d+=p++;

printf(“%d”,d);

}

main()

{

int a=3;

fun(a);

d+=a++;

printf(“%d”,d);

}

4.该fun函数的功能是求10的阶乘。

1) #include

2) long fun ( int n)

3) {if (___1___)

4) return (n*fun(___2___));

5) else if ( ___3___)

6) return 1;}

第一处:n>1

第二处:n-1·

第三处:n==1

解析:从第2、4行看到了函数名,函数体中又出现了函数的调用,则是递归。我们知道:n!=n*(n-1)! 这就是一个递归的表达式,写成函数就是fun(n)=n*fun(n-1)。因此,4行处填写n-1。又:1!=1 故3,5行就好填了。因此答案是n>1 n-1 n==1。还有0!=1 故,还可填写:n>0 n-1 n==0

注意:3 5行的条件是相反的,这也是if与else条件的互斥性。

5. 程序的功能是计算s=1!+2!+3!+……+n!

1) long fun(int n)

2) { int i;

3) long s;

4) s=___1___;

5) for (i=1; i<=n; i++)

6) s=___2___;

7) return s;

相关文档
最新文档