习题3及其解答(06级2版) 下载本文

内容发布更新时间 : 2024/5/18 8:03:18星期一 下面是文章的全部内容请认真阅读。

习题3及其解答

3.1 选择题

1.以下正确的函数原型为( d )。 (a)? f1( int x ; int y ) ; (b) void f1( ?x , ?y ) ; (c) void f1( int x , ?y ) ; (d) void f1( int , int ) ; 2.有函数原型 void fun2( int ); 下面选项中,不正确的调用是( c )。 (a) double x = 2.17 ; fun1( x ) ; (b) int a = 15 ; fun2( a * 3.14 ) ; (c) int b = 100 ; fun2( & b ) ; (d) fun2( 256 ) ;

3.有函数原型 void fun3( int * ); 下面选项中,正确的调用是( c )。 (a) double x = 2.17 ; fun3( &x ) ; ??? (b) int a = 15 ; fun3( a * 3.14 ) ; (c) int b = 100 ; fun3( & b ) ; (d) fun2( 256 ) ;

4.有函数原型 void fun4( int & ); 下面选项中,正确的调用是( c )。 (a) int x = 2.17 ; fun4( &x ) ;

(b) int a = 15 ; fun4( a * 3.14 ) ; (c) int b = 100 ; fun4( b ) ; (d) fun4( 256 ) ;

5.有声明 int fun5( int ); int (*pf)(int) = fun5 ; 下面选项中,正确的调用是( c )。

(a) int a = 15 ; int n = fun5( &a ) ; (b) int a = 15 ; cout << ( &pf )( a ) ; (c) cout << ( *pf )( 256 ) ; (d) cout << *pf( 256 ) ;

6.在VC中,若定义一个函数的返回类型为void,以下叙述正确的是( c )。 (a) 函数返回值需要强类型转换 (b) 函数不执行任何操作 (c) 函数本身没有返回值 (d) 函数不能修改实际参数的值 7.函数参数的默认值不允许为( c )。

(a) 全局常量 (b) 直接常量 (c) 局部变量 (d) 函数调用 8.使用重载函数编程序的目的是( a )。

(a) 使用相同的函数名调用功能相似的函数 (b) 共享程序代码 (c) 提高程序的运行速度 (d) 节省存贮空间 9.下列的描述中( b )是错误的。

(a) 使用全局变量可以从被调用函数中获取多个操作结果

(b) 局部变量可以初始化,若不初始化,则系统默认它的值为0 (c) 当函数调用完后,静态局部变量的值不会消失

1

(d) 全局变量若不初始化,则系统默认它的值为0 10.下列变量中,( c )的具有文件作用域。 (a) 语句标号 (b) 局部变量 (c) 全局变量 (d) 静态变量

3.2 阅读下列程序,写出执行结果

1.

#include #include int f( int ) ; void main() { int i;

for( i = 0 ; i < 3 ; i ++ ) cout << f( i ) << endl ; }

int f( int a ) { int b = 0 , c = 1 ;

b++ ;c++ ; // b=b+1=0+1=1, c=c+1=1+1=2

return ( a + pow( b, 2 ) + c ) ; // a= 0,1,2, pow( b, 2 )= =b*b, b=0+1=1*1=1, c=2 }

答案: 3 4 5 2.

void func(int a, int b, int c = 3, int d = 4 ) ; // 默认参数int c = 3, int d = 4 #include void main()

{ func( 10, 15, 20, 30 ) ; //传值结果: a=10, b=15, c=20, d=30 func( 10, 11, 12 ) ; func( 12, 12 ) ; }

void func( int a, int b, int c, int d )

{ cout << a << '\\t' << b << '\\t' << c << '\\t' << d << endl ; }

//传值结果: a=10, b=11, c=12, d=4 //传值结果: a=12, b=12, c=3, d=4

答案:

10 15 20 30 10 11 12 4 12 12 3 4

2

3.#include

void func( int, int, int * ) ; void main() { int x, y, z ; func( 5, 6, &x ) ;

func( 7, x, &y ) ; func( x, y, &z ) ;

cout << x << \<< y << \<< z << endl ; }

void func( int a , int b , int *c ) { b += a ; // b=b+a

*c = b – a ; // *c=b-a=b ,即返回时:*c=b } 答案: 6,6,6

4.#include

void func( int, int, int & ) ; void main()

{ int x=0 , y=1 , z=2 ; func( 1 , 2 , x ) ; func( x + y , y , y ) ; func( z , x + y , z ) ;

cout << x << \<< y << \<< z << endl ; }

void func( int a , int b , int &c ) { b += a ; c = b – a ; } 答案: 2,1,3

5.#include

int f2( int, int ) ;

int f1( int a , int b ) //a=3, b=4

{ int c ;

a += a ; b += b ; //a=a+a=6; b=b+b=8 c = f2( a + b , b+1 ) ; // f2( 14, 9)

return c;

}

3