当前位置:文档之家› C语言用函数实现模块化程序设计

C语言用函数实现模块化程序设计

第7章用函数实现模块化程序设计
习题与思考
2.在C语言中,函数的隐含存储类别是_____A_____.
A)auto B)static C)extern D)无存储类别
要点分析:本习题考察变量的存储类别。

C语言规定,如不指定变量的存储类别,系统默认为自动类型的,即auto型。

3.以下所列的各函数首部中,正确的是_____C_____.
A)void play(var:Integer,var b:Integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
要点分析:本习题考察函数的定义。

要求函数首部的各个形式参数应分别指出其数据类型。

4.以下程序的输出结果是_____C_____.
fun(int x,int y,int z)
{ z=x*x+y*y;}
void main( )
{ int a=31;
fun(5,2,a);
printf("%d",a);}
A)0 B)29 C)31 D)无定值要点分析:本习题考察形参和实参的关系。

函数一旦发生传值调用,把实参的值传递给形参后,实参的值仍保留原值。

5.以下程序的输出结果是_____A_____.
f( int b[ ],int m, int n )
{ int i,s=0;
for(i=m;i<n;i=i+2) s=s+b[i];
return s; }
void main( )
{ int x,a[ ]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7); printf("%d\n",x); }
A) 10 B) 18 C) 8 D) 15
要点分析:本习题考察数组做函数的参数,此时实参为数组名,形参数组不再重新分配存储空间,形参数组共占实参数组所在的存储空间。

数组做函数参数是学生出错误比较多的知识点。

7.以下程序的输出结果是_____D_____.
int f( )
{ static int i=0;
int s=1;
s+=i;i++;
return s;}
void main( )
{ int i,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a); }
A) 20 B) 24 C) 25 D) 15
要点分析:本习题考察静态局部变量。

静态局部变量的值在调用结束后仍保持结束后的值。

静态局部变量是变量的存储类别的重点,学生应该掌握并应用。

8. 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。

请填空。

int fun( int n)
{ int m=0,f=1,i;
for(i=1; i<=n; i++)
{ m+=i*f;
f= _____-f_____ ; }
return m; }
void main( )
{ printf("m=%d\n", _____fun(10)_____ ); }
要点分析:本习题考察函数的调用。

通过编写fun函数求得累加和。

9.以下程序输出的最后一个值是_____120_____.
int ff(int n)
{ static int f=l;
f=f*n;
return f;}
void main( )
{ int i;
for(i=1;i<=5;i++ ) printf("%d\n",ff(i)); }
要点分析:本习题仍然考察静态局部变量。

ff函数利用静态局部变量实现求得n的阶乘。

10.以下函数的功能是:求x的y次方,请填空。

double fun( double x, int y )
{ int i;
double z;
for( i=1,z=x;i<y;i++ ) z=z*_____x_____;
return z; }
要点分析:本习题考察函数的定义。

11. 以下正确的说法是_____B_____.
A) 用户若需要调用标准库函数,调用前必须重新定义
B) 用户可以重新定义标准库函数,如若此,该函数将失去原有定义
C) 系统不允许用户重新定义标准库函数
D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。

要点分析:本习题考察标准库函数的作用。

提醒学生注意,使用现成的函数是任何编程者的首选。

12. C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式_____B_____.
A) 地址传递
B) 值传递
C) 有实参传给形参,再由形参传给实参
D) 由用户指定传递方式
要点分析:本习题考察传值调用与传址调用的区别。

这也是本章的难点所在。

相关主题