1、 第五章 函 数 1第五章 函 数51 选择题1 C 语言是由( )构成。A. 主程序和子程序B. 主函数和若干子函数C. 一个主函数和一个其他函数D. 主函数和子程序2 以下说法中正确的是( ) 。A. C 语言程序总是从第一个的函数开始执行B. 在 C 语言程序中,要调用的函数必须在 main()函数中定义C. C 语言程序总是从 main()函数开始执行D. C 语言程序中的 main()函数必须放在程序的开始部分3 以下对 C 语言函数的有关描述中,正确的是( ) 。A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B. C 函数既可以嵌套定义又可以递归调用C. 函数必
2、须有返回值,否则不能使用函数D. C 程序中有调用关系的所有函数必须放在同一个源程序文件中4 C 语言程序中,当函数调用时( ) 。A. 实参和形参各占一个独立的存储单元B. 实参和形参共用一个存储单元C. 可以由用户指定是否共用存储单元D. 计算机系统自动确定是否共用存储单元 5 关于 return 语句,下列正确的说法是( ) 。A. 在主函数和其他函数中均要出现B. 必须在每个函数中出现C. 可以在同一个函数中出现多次D. 只能在除主函数之外的函数中出现一次6 一个函数返回值的类型是由( )决定的。A. return 语句中表达式的类型B. 在调用函数时临时指定C. 定义函数时指定的函数
3、类型D. 调用该函数的主调函数的类型7 在 C 语言的函数中,下列正确的说法是( ) 。A. 必须有形参B. 形参必须是变量名C. 可以有也可以没有形参D. 数组名不能作形参8 以下描述正确的是( ) 。A. 函数调用可以出现在执行语句或表达式中B. 函数调用不能作为一个函数的实参第五章 函 数 2C. 函数调用可以作为一个函数的形参D. 以上都不正确9 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( ) 。A. 地址传递 B. 单向值传递C. 由实参传给形参,再由形参传回实参 D. 传递方式由用户指定10当调用函数时,实参是一个数组名,则向函数传送的是( ) 。A. 数
4、组的长度 B. 数组的首地址C. 数组每一个元素的地址 D. 数组每个元素中的值11如果在一个函数的复合语句中定义了一个变量,则该变量( ) 。A. 只在该复合语句中有效,在该复合语句外无效B. 在该函数中任何位置都有效C. 在本程序的源文件范围内均有效D. 此定义方法错误,其变量为非法变量 12下列说法不正确的是( ) 。A. 主函数 main 中定义的变量在整个文件或程序中有效B. 不同函数中,可以使用相同名字的变量C. 形式参数是局部变量D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效13在一个源程序文件中定义的全局变量的有效范围是( ) 。A. 本源程序文件
5、的全部范围B. 一个 C 程序的所有源程序文件C. 函数内全部范围D. 从定义变量的位置开始到源程序文件结束14以下叙述中不正确的是( ) 。A. 在不同的函数中可以使用相同名字的变量B. 函数中的形式参数是局部变量C. 在一个函数内定义的变量只在本函数范围内有效D. 在一个函数内的复合语句中定义的变量在本函数范围内有效15如果要限制一个变量只能为本文件所使用,必须通过( )来实现。A. 外部变量说明 B. 静态局部变量C. 静态外部变量 D. 局部变量说明16下列哪种数据不存放在动态存储区中( ) 。A. 函数形参变量 B. 局部自动变量C. 函数调用时的现场保护和返回地址 D. 局部静态变
6、量17以下叙述中不正确的是( ) 。A. 函数中的自动变量可以赋初值,每调用一次,赋一次初值。B. 在调用函数时,实在参数和对应形参在类型上只需赋值兼容。C. 外部变量的隐含类别是自动存储类别。D. 函数形参可以说明为 register 变量。18以下只有在使用时才为该类型变量分配内存的存储类说明是( ) 。A. auto 和 static B. auto 和 registerC. register 和 static D. extern 和 register19C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( ) 。A. void B. int C. float D. doubl
7、e第五章 函 数 320在 C 语言中,函数的隐含存储类别是( ) 。A. auto B. static C. extern D. 无存储类别21在 C 语言中,形参的缺省存储类是( ) 。A. auto B. register C. static D. extern22若有以下程序#include void f(int n);main() void f(int n);f(5);void f(int n)printf(“%dn“,n); 则以下叙述中不正确的是( ) 。A. 若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 fB. 若在主函数前对函数 f 进行说明,则在主函数和
8、其后的其它函数中都可以正确调用函数 fC. 对于以上程序,编译时系统会提示出错信息:提示对 f 函数重复说明D. 函数 f 无返回值,所以可用 void 将其类型定义为无值型23以下所列的各函数首部中,正确的是( ) 。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)24有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是( ) 。A
9、. 3 B. 4 C. 5 D. 有语法错25若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是( ) 。A.3 B.4 C.5 D.626以下函数值的类型是( ) 。fun (float x) float y;y= 3*x-4;return y;A. int B. 不确定 C. void D. float27下列函数定义不正确的是( ) 。A. int max() B. int max(x,y) 第五章 函 数 4int x,y,z; int x,y; z=xy?x:y; int z; z=xy?x:y;return(z);C.
10、int max(x,y) D. int max()int x,y,z; z=xy?x:y;return(z);28下列程序的运行结果是( ) 。main()int i=3;printf(“%d,%d,%dn“,i,i+,i+);A. 5,5,4 B. 3,4,5 C. 3,3,4 D. 5,4,329以下程序的输出结果是( ) 。fun(int x, int y, int z) z=x*x+y*y; main()int a=31;fun(5,2,a);printf(“%d“,a);A. 0 B. 29 C. 31 D. 无定值30下列程序执行后的输出结果是( ) 。void func1(int
11、 i);void func2(int i);char st=“hello,friend!“;void func1(int i) printf(“%c“,sti);if(i第五章 函 数 7func( int a, int b) int c;c=a+b;return c;main() int x=6, y=7, z=8, r;r=func( (x-,y-,x+y),z-);printf(“%dn“,r);上面程序的输出结果是( ) 。A. 11 B. 19 C. 21 D. 3138请读程序:#includef(in b, int n) int i, r;r=1; for(i=0; i2) re
12、turn(fib(n-1)+fib(n-2);else return(2);main() printf(“%dn“,fib(3); 该程序的输出结果是( )。A. 2 B. 4 C. 6 D. 841以下程序的输出结果是( ) 。long fun( int n) long s;if(n=1 | n=2) s=2;else s=n-fun(n-1);return s;main() printf(“%ldn“, fun(3); A. 1 B. 2 C. 3 D. 442以下程序的输出结果是( ) 。func(int x)int p;if(x=0|x=1) return(3);p=x-func(x-
13、2);return p;main() printf(“%dn“,func(9);A. 7 B. 2 C. 0 D. 343有以下程序int f(int n) 第五章 函 数 9if(n=1) return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i3;i+) j+=f(i);printf(“%dn“,j);程序运行后的输出结果是( ) 。A. 4 B. 3 C. 2 D. 144下面程序的输出是( ) 。int w=3;main() int w=10; printf(“%dn“,fun(5)*w); fun(int k) if(k=0)
14、return w;return(fun(k-1)*k); A. 360 B. 3600 C. 1080 D. 120045以下程序的输出结果是( ) 。#include “stdio.h“int i=5;main()int i=3; int i=10;i+;f1();i+=1;printf(“%dn“,i);int f1()i=i+1; return(i);A.7 B.4 C.12 D.646以下程序的输出结果是( ) 。int a, b;void fun()第五章 函 数 10a=100; b=200; main() int a=5, b=7;fun();printf(“%d%dn“, a,
15、b);A. 100200 B. 57 C. 200100 D. 7547以下程序输出结果是( ) 。main()int i; for(i=0;i2;i+) add();add()int x=0;static int y=0;printf(“%d,%dn“,x,y);x+; y=y+2;A. 0,0 B. 0,0 C. 0,0 D. 0,00,0 0,2 1,0 1,248设有以下函数:f (int a) int b=0;static int c = 3;b+; c+;return(a+b+c);如果在下面的程序中调用该函数,则输出结果是( ) 。main() int a = 2, i;for(i=0;i3;i+) printf(“%dn“,f(a);A. 7 B. 7 C. 7 D. 78 9 10 79 11 13 749以下程序的输出的结果是( ) 。int x=3;main()