C++习题集

第三章 函数

一、填空题

1. 一个函数调用表达式能够作为左值的条件是:函数的返回值必须是______

类型。

2. 假定一个函数的数组参数说明为char a[],则等价的指针参数说明为

______。

3. 假定一个函数的二维数组参数说明为int w[][N],则等价的指针参数说明为

______。

4. 假定一个参数说明为const int a,则在函数体中______(能够/不能够)改

变a的值。

5. 假定一个参数说明为const char *p,则在函数体中______(能够/不能够)

改变p所指向的存储空间的内容,但______改变p指针的内容。

6. 假定一个参数说明为int &x,则进行函数调用时,它是对应______的别名。 7. 一个函数带有函数声明时,则参数的默认值应该在______(函数定义/函数

声明)中给出。

8. 在进行函数调用时,将把______传送给非引用参数,把实参的______传送

给引用参数。

9. 函数执行中对引用参数的访问实际上就是对相应______的访问。

10. 当函数的返回类型为void 时,在函数体中可以使用______语句,否则必须

使用______语句返回一个值。

11. 当实参为一个数组名时,对应的形参必须是______类型或______类型。 12. 变量的四种作用域分别为______、______、______和______。 13. 不同作用域范围内的变量______(能够/不能够)同名。

14. 当一个函数的非引用参数为a,假定它对应的实参也为a,则在函数体中对a

的访问与对应的实参a______(有关/无关)。

15. 当一个函数的引用参数为a,假定它对应的实参也为a,则在函数体中对a

的访问与对应的实参a______(有关/无关)。这两个变量的作用域______

(相同/不同)。

16. 当一个函数的引用参数为a,假定它对应的实参为b,则它们对应的作用域

______(相同/不同),访问它们的存储空间______(相同/不同)。 17. 在函数定义的第一层复合语句内______(能够/不能够)定义与形参同名的

变量,因为它们作用域______(相同/不同)。

18. 函数的形参和函数体内的变量______(可以/不可以)与全局域或文件域的

对象同名。

19. 在两个嵌套的不同作用域内若分别定义有同名对象,当在内层作用域访问

这个对象时,将访问的是在______(内层/外层)定义的对象,除此之外将访问的是在______(内层/外层)定义的对象。

20. 在一个程序文件中定义的函数,若要在另一个程序文件中访问,则必须在

该文件开始给出一条该函数的______对其进行说明。

21. 在一个函数体中可以使用函数调用表达式调用其他函数,也可以调用

______。

22. 在函数体中又调用自身函数称为______调用,该函数称为______函数。 23. 当两个函数的函数名______,但参数的个数或对应参数的类型______时,

则称为重载函数。

24. 当一个函数为void f(int ,char=’a’),另一个函数为void f(int),则它

们______(是/不是)重载函数,在一个程序中______(可以/不可以)同时定义这两个函数。

25. 一个函数模板中的类型参数所对应的具体类型由调用该函数模板的______

决定。

26. 当在同一个程序中存在一个普通函数是一个函数模板的重载函数时,则与

函数调用表达式相符合的______将被优先调用执行。

27. 当一个函数调用表达式只能与一个函数模板相符合时,将首先根据函数模

板生成一个______,然后再调用它执行。

28. 在函数定义的参数表中,也可以使用函数参数,假定一个函数参数说明为

int &ff(int[],int),则等价的函数指针说明为______。

二、给出下列程序运行后的输出结果并上机验证

1. #include

void main() {

int a=10,b=20;

cout<

cout<

cout<

2. #include

int a=5; void main() {

int a=10,b=20;

cout<

{ a+=i;b+=a; }

cout<

cout<

3. #include

int f1(int x,int y) {

x=x+y;y=x+y;

cout<<”x=”<

void main() {

int x=5,y=8; int z=f1(x,y);

cout<<”x=”<

4. #include

void f2(int&x,int&y) {

int z=x;x=y;y=z; }

void f3(int *x,int *y) {

int z=*x;*x=*y;*y=z; }

void main() {

int x,y;

x=10;y=26;

cout<<”x,y=”<

cout<<”x,y=”<

cout<<”x,y=”<

cout<<”x,y=”<

5. #include

void f4(int a[],int n,int &s) { s=0;

for(int i=0;i

void main() {

int a[5]={2,7,5,4,9};

int b[10]={4,8,6,9,2,10,7,12,6,15}; int x; f4(a,5,x); int y=x; f4(b,8,x); y+=x; f4(b+3,5,x); cout<

6. #include

int x=5; void f5(int a); int f6(int x); void main() {

int x=3; f5(x); f5(x+4);

cout<

void f5(int a) {

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4