C语言程序设计 清华大学出版社 马秀丽 刘志妩科后习题7解答.doc
习题7 参考答案
1 选择题(请选择一个正确的答案)
1. 以下对C语言函数的有关描述中,正确的是
A. 在C语言中调用函数时,只能实参的值转送给形参,形参的值不能转送给实参。
B. C函数既可以嵌套定义,又可以递归调用。
C. 函数必须有返回值,否则不能使用函数。
D. C程序中有调用关系的所有函数必须放在同一个源程序文件中。 A.
2. C语言中规定函数的返回值的类型由
A. return语句中的表达式类型所决定。
B. 调用该函数时的主调函数类型所决定。
C. 调用该函数时系统临时决定。
D. 在定义该函数时所指定的函数类型所决定。. 以下不正确的说法是A. 在不同函数中可以使用相同名字的变量。
B. 形参是局部变量。
C. 在函数内定义的变量只在本函数范围内有效。
D. 在函数内的复合语句中定义的变量在本函数范围内有效。. 有一个如下定义的函数
func(a)
{ printf("%d",a);
return a;}
则该函数值的类型是
A. 整型 B.类型 C. 没有返回值 D. 无法确定A
5. 以下错误的描述为
A. 在函数之外定义的变量称为外部变量,外部变量是全局变量。
B. 在一个函数中既可以使用本函数中的局部变量a,又可以使用同名的外部变量a。
C. 外部变量定义和外部变量说明的含义不同。
D. 若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。B.
6. 下面程序的输出结果是_____
fun3(int x)
{static int a = 3 ;
a+=x;
return a;
}
main()
{int k=2,m=1,n;
n = fun3(k);
n = fun3(m) ;
printf( "%d\n",n);
}
A. 3 B. 4 C. 6 D. 9
C
7.下面程序的输出结果是_____
#include
main()
{ int k=4,m=1,p;
int func (int a,int b);
p=func(k,m);
printf("%d," ,p);
p=func(k,m);
printf("%d\n",p);
}
func (int a,int b)
{static int m=0,i=2;
i+=m+1; m=i+a+b;
return m;
}
A. 8, 17 B. 8, 16 C. 8, 20 D. 8 , 8
答案:A
7.2 判断下列叙述的正确性,若正确在()内标记(,若错误在()内标记(。
( ( )全局变量与函数体内定义的局部变量重名时,全局变量优先。
( ( )对于不需要使用函数返回值的函数,可以不定义类型。
( ( )一个函数可以定义在别的函数的内部,即嵌套定义。
( ( )返回值为int或char类型时,函数声明可以缺省。
( ( )在C语言中允许函数之间的嵌套调用。
( ( )局部静态变量是在编译时赋初值的,即只赋初值一次。
( ( )函数的形参在退出该函数后就被释放了。
7.3 填空题(请在空白处填入合适的内容)
C语言程序的基本组成单位是__。
C语言程序总是从__函数开始执行。
当函数的返回值与函数值类型不一致时,将以____函数值____的类型为准。
凡在函数中未指定存储类别的变量,其隐含的存储类别为__。
静态局部变量的作用域是__。
C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方是__。
若定义的函数没有返回值时,则应在该函数声明时加一个类型说明符__。
在C语言中,一个函数直接或间接地调用自身,便构成了函数的__。
函数的形式参数作用域为__。7.4 读程序写运行结果
1.int F(int a)
{int b=0;
b=b+1;
return (a+b);}
main()
{int i;
for(i=1;i<=3;i++)
printf(“%d”, F(i));
}
运行结果____
3.int fun (int p)
{ int b=0;
static int c=3;
p=c++, b++;
return (p) ;
}
main()
{int a=2,i,k;
for(i=0;i<2;i++)
k=fun(a);
printf(“%d”,k);
}
运行结果_____
7.5 完善下列程序,使程序有正确运行结果。
1.下面的程序用来求xy。
float power( float x, int y )
{float z;
for(z=1;y>0;y__①__1)
z__②__x;
return z;
}
mai