第七章 函数习题答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

}

程序执行结果为_______________________________。

相关文档
最新文档