第7章用函数实现模块化程序设计习题与思考2.在C语言中,函数的隐含存储类别是_____A_____.A)autoB)staticC)externD)无存储类别要点分析:本习题考察变量的存储类别。C语言规定,如不指定变量的存储类别,系统默认为自动类型的,即auto型。3.以下所列的各函数首部中,正确的是_____C_____.A)voidplay(var:Integer,varb:Integer)B)voidplay(inta,b)C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)要点分析:本习题考察函数的定义。要求函数首部的各个形式参数应分别指出其数据类型。4.以下程序的输出结果是_____C_____.fun(intx,inty,intz){z=x*x+y*y;}voidmain(){inta=31;fun(5,2,a);printf(%d,a);}A)0B)29C)31D)无定值要点分析:本习题考察形参和实参的关系。函数一旦发生传值调用,把实参的值传递给形参后,实参的值仍保留原值。5.以下程序的输出结果是_____A_____.f(intb[],intm,intn){inti,s=0;for(i=m;in;i=i+2)s=s+b[i];returns;}voidmain(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf(%d\n,x);}A)10B)18C)8D)15要点分析:本习题考察数组做函数的参数,此时实参为数组名,形参数组不再重新分配存储空间,形参数组共占实参数组所在的存储空间。数组做函数参数是学生出错误比较多的知识点。7.以下程序的输出结果是_____D_____.intf(){staticinti=0;ints=1;s+=i;i++;returns;}voidmain(){inti,a=0;for(i=0;i5;i++)a+=f();printf(%d\n,a);}A)20B)24C)25D)15要点分析:本习题考察静态局部变量。静态局部变量的值在调用结束后仍保持结束后的值。静态局部变量是变量的存储类别的重点,学生应该掌握并应用。8.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。intfun(intn){intm=0,f=1,i;for(i=1;i=n;i++){m+=i*f;f=_____-f_____;}returnm;}voidmain(){printf(m=%d\n,_____fun(10)_____);}要点分析:本习题考察函数的调用。通过编写fun函数求得累加和。9.以下程序输出的最后一个值是_____120_____.intff(intn){staticintf=l;f=f*n;returnf;}voidmain(){inti;for(i=1;i=5;i++)printf(%d\n,ff(i));}要点分析:本习题仍然考察静态局部变量。ff函数利用静态局部变量实现求得n的阶乘。10.以下函数的功能是:求x的y次方,请填空。doublefun(doublex,inty){inti;doublez;for(i=1,z=x;iy;i++)z=z*_____x_____;returnz;}要点分析:本习题考察函数的定义。11.以下正确的说法是_____B_____.A)用户若需要调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义C)系统不允许用户重新定义标准库函数D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。要点分析:本习题考察标准库函数的作用。提醒学生注意,使用现成的函数是任何编程者的首选。12.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式_____B_____.A)地址传递B)值传递C)有实参传给形参,再由形参传给实参D)由用户指定传递方式要点分析:本习题考察传值调用与传址调用的区别。这也是本章的难点所在。