第七章 函数习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章函数习题答案
1. 单项选择题
(1) 若定义的函数有返回值,则以下关于该函数调用的说法中错误的是____D____。
A. 函数调用可以作为独立的语句存在
B. 函数调用可以作为一个函数的参数
C. 函数调用可以出现在表达式中
D. 函数可以作为一个函数的形式参数
(2) 在函数的调用过程中,如果函数FUNA调用了函数FUNB,函数FUNB又调用了函数FUNA,则___B_____。
A. 称为函数的直接递归调用
B. 称为函数的间接递归调用
C. 称为函数的循环调用
D. C语言不允许这样的递归调用
(3) 在C语言中,函数的隐含存储类别是__A______。
A. auto
B. static
C. extern
D. 无存储类别
(4) 在下列对C语言函数的描述中,正确的是___A_____。
A. 在C语言中调用函数时,只能将实际参数的值传给形式参数,形式参数的值不能传给实际参数
B. C函数既可以是嵌套定义,又可以是递归定义
C. 函数必须有返回值
D. C程序中有调用关系的所有函数必须放在同一个源程序文件中
(5) 下面函数的类型是___B_____。
f(double x)
{printf("%6d\n",x);}
A. 浮点型
B. int型
C. void型
D. 都不是
(6) 有以下程序:
char fun(char x,char y)
{
if(x return y; } main() { int a='9',b='8',c='7'; printf("%c\n",fun(fun(a,b),fun(b,c))); } 程序的执行结果是____C____。 A. 函数调用出错 B. 8 C. 9 D. 7 (7) 有以下程序: void f(int x,int y) { int t; if(x {t=x;x=y;y=t;} } main() { int a=4,b=3,c=5; f(a,b);f(a,c);f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行结果为____D____。 A. 3,4,5 B. 5,4,3 C. 5,3,4 D. 4,3,5 (8) 下面程序的输出为________。 #include int x,y; f() { extern int x,y; int a=18,b=16; x+=a+b; y+=a-b; } main() { int a=9,b=8; x=a+b; y=a-b; f(); printf("%d,%d\n",x,y); } 执行结果为___A_____。 A. 51,3 B. 34,2 C. 17,1 D. 前面的都不对 (9) 以下程序的正确执行结果是____D____。 main() { int a=2,i; for(i=0;i<3;i++) printf("%4d",f(a)); } f(int a) { int b=0; static int c=3; b++;c++; return(a+b+c); } A. 7 7 7 B. 7 10 13 C. 7 9 11 D. 7 8 9 (10) 以下程序的执行结果为___A____。 long fun(int n) { long s; if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } main() {printf("%d\n",fun(3));} A. 1 B. 2 C. 3 D. 4 (11) 有如下程序: long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main() {printf("%d\n",fib(3));} 该程序的执行结果为___B_____。 A. 2 B. 4 C. 6 D. 8 2. 填空题 (1) unsigned func(unsigned num) { unsigned k=1; do {k*=num%10; num/=10;} while(num); return k; } main() { unsigned n=26; printf("%d\n",func(n)); } 程序执行结果为__________12____________。 (2) double sub(double x,double y,double z) { y-=1.0; z+=x; return z; } main() { double a=2.5,b=9.0; printf("%f\n",sub(b-a,a,a)); } 程序执行结果为_________9.000000________。 (3) main() { int a=3,b=2,c=1; c-=++b; b*=(a+c); { int b=5,c=12; c/=2; a-=c; printf("%d,%d,%d",a,b,c); -3,5,6 a+=--c; } printf("%d%d%d\n",a,b,c); 2 3 -2 } 程序执行结果为_______________________________。