计算机程序设计基础(C++)(景红版)课后全部习题集与参考答案解析 下载本文

(C) 表达式p-a是合法的 (D) 表达式a+2是合法的

14 有下面语句int a[10]={10,9,8,7,6,5,4,3,2,1},*p=a;则数值为2的表达式是( )。 (A)a[9] (B)*p[8] (C)*(a+8) (D)p+8 15. 设有如下的程序段,有语法错误的语句是( )。

(A)char *p=\;cout<

(B) char name[7]=\;cout<

(A) cde (B) 字符c (C) 字符c的地址 (D) 无确定的输出结果 17. 设有如下程序段:

char str[ ]=\ *(p+5)的值是( )。 (A) 随机值 (B) 字母o

(C) 字符串结束标志‘\\0’ (D) 字母o在内存的地址 18. 设有定义语句:int *p[4];则标识符p是( )。 (A) 一个指向整型变量的指针 (B) 一个指向整型的指针数组名

(C) 一个指针,它指向一个含有四个整型元素的一维数组 (D) 一个非法的定义语句

19. 设有如下程序段:输出的值为( )。

int a[3][3]={9,8,7,6,5,4,3,2,1};; int *p[3]; p[1]=a[1];

cout<<*(p[1]+2)<

(A) 4 (B) 5 (C) 6 (D) 7 20. 设有如下程序段:

int *point;

point=new int(4); 表明了( )。

(A) 用动态分配了存放int类型数据的内存空间,将初值4存入该空间中,并将首地址赋给指针point

(B) 用动态分配了存放int类型数据的内存空间,分配的内存空间的大小为4个字节,并将首地址赋给指针point

(C) 用动态分配了存放int类型数据的内存空间,将首地址赋给指针point,且point指针的值为4

(D) 用动态分配了存放int类型数据的内存空间,将首地址赋给指针point,且point指针在内存空间的地址值为4

第6章 函数的应用

一、判断题

( )1. 一个C++程序通常由有而且只能有一个的主函数、若干个子函数和库函数构成。 ( )2. 用语句cout<

( )5. 要在C++程序中通过引用来传递变量,则应该在函数头的对应形参名前面加上地

址运算符&。

( )6. 在C++有返回值的函数中,return语句有而且只能有一条。

( )7. void函数调用后,可以作为一个值出现在赋值语句的右边赋值给一个变量。 ( )8. 变量的生存期指明了该变量在计算机内存中能保留多久。

( )9. Visual C++6.0系统中,使用语句srand(time(NULL));来初始化随机数产生器。 ( )10. Visual C++6.0系统中,用户若需调用内置系统函数,调用前不必使用预编译命令

将该函数所在文件包括到用户源文件中,系统会自动调用。

( )11. Visual C++6.0系统中,有调用关系的所有函数必须放在同一源程序文件中。 ( )12. 在C++中,实参与形参结合方式有三种:值调用、引用调用和地址调用。 ( )13. 当数组名作为函数调用的实参时,实参与形参表示同一个数组。

( )14. 在C++的函数调用中,主函数可以调用子函数,子函数也可以调用其它的子函

数,但子函数不能自己调用自己。

( )15. void函数的函数头以关键字void开始,函数体中最后一条语句为return。 ( )16. 只能被声明该变量的函数使用的那些变量被称为全局变量。 ( )17. 变量的作用域指明了程序的哪一部分可以使用该变量。

( )18 函数的形式参数可以都有默认值,也可以只有部分有默认值。 ( )19 函数的递归调用可分为直接递归调用和间接递归调用。

( )20 同一源文件中,若外部变量名与局部变量名相同,则在执行该函数过程中,外部

变量起作用。 二、单项选择题

1. 下面哪一个C++函数和数学表达式53是等价的( )。

(A) power(3,5) (B) pow(3,5) (C) pow(5,3) (D) srqt(3,5) 2. 下面哪一条C++语句显示范围3到9之间的随机数( )。 (A) 1+rand( )%(9-3+1) (B) 3+rand( )%(9-3+1) (C) 3+rand( )%(9+3-1) (D) 9+rand( )%(9+1-3) 3. Visual C++中,函数返回值的类型是由( )。 (A) return 语句中的表达式类型所决定 (B) 调用该函数时的主调函数类型所决定 (C) 调用该函数时系统临时决定

(D) 在定义该函数时所指定的函数类型所决定 4. 以下叙述中正确的是( )。

(A) 构成C++程序的基本单位是函数 (B) 可以在一个函数中定义另一个函数 (C) 主函数必须放在其他函数之前

(D) 所有被调用的函数一定要在调用之前进行定义 5. 以下正确的函数头定义形式是( )。

(A) int fun(int x;int y) (B) int fun(int x,int y) (C) int fun(int x,y) (D) int fun(int x;) 6. 在下面的函数原型中,存在语法错误的是( )。

(A) void BC( int a ,int ); (B) void BC( int ,int );

(C) void BC( int ,int b=5); (D) void BC( int a ;int b); 7. 若有函数原型“int sum(int x, int y);”,则使用语句“cout<

(A) void cacl(int, int); (B) void cacl(int); (C) void cacl(int &, int &); (D) int cacl(void); 9. 以下说法中哪一项是错误的( )。

(A) 在函数头中形参的名字必须和函数调用中实参的名字一样 (B) 在函数头中列出的形参必须包含每个参数的数据类型和名字

(C) 在函数头中,函数名后面的一对空括号代表函数不接受任何信息 (D) 函数的语句被括在一对花括号中

10. 以下哪一条C++语句显示名为address字符串变量所包含的字符的个数( )。 (A) cout<

11. 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能实现正确交换功能的函数是( )。

(A) void funa(int &x,int &y) (B) void funb(int x,int y) { int p; { int t;

p=x;x=y;y=p;} t=x;x=y;y=t;} (C) void func(int *x,int *y) (D) void fund(int x,int y)

{ *x=*y;*y=*x; } { x=x+y; y=x-y; x=x-y; } 12. 关于引用,下列说法中正确的是( )。

(A) 引用是一种特殊类型的变量,是另一个变量的别名 (B) 引用在函数调用中传递的是变量的值 (C) 在声明引用时,要给它另开辟内存单元 (D) 在声明引用时,可以不进行初始化 13. 下列叙述中正确的是( )。

(A) C++程序中,main( )函数必须在其它函数之前,函数内可以嵌套定义函数 (B) C++程序中,main( )函数的位置没有限制,函数内不可以嵌套定义函数

(C) C++程序中,main( )函数必须在其它函数之前,函数内不可以嵌套定义函数 (D) C++程序中,main( )函数必须在其它函数之后,函数内可以嵌套定义函数 14. 下面有关函数原型的说法正确的是( )。

(A) 函数原型与函数的定义语法是一样的

(B) 如果程序中有自定义函数,必须有和其对应的函数原型

(C) 函数原型的参数和函数定义的参数列表在参数的个数、名称、类型上必须一一对应 (D) 函数原形和函数定义在函数名和返回类型上必须一致

15. 在C++函数头定义中,若省略了返回值的数据类型,其默认的返回值的数据类型为 ( )。

(A) int (B) float (C) double (D) void 16. 下列程序运行后的结果是( )。 #include using namespace std; void fun(int *a, int b) { int *k; k=a; *a=b; b=*k; }

void main( )

{ int a=3,*x=&a; int y=5; fun(x,y);

cout<

}

(A) 3 5 (B) 5 5 17. 下列程序运行后的结果是( )。

#include using namespace std; void fun(char *c,int d) { *c=*c+1;d=d+1; }

void main( ) { char a='A',b='a'; fun(&b,a); cout<

(A) B a, (B) a B 18. 下列程序运行后的结果是( ) 。

#include using namespace std;

void fun(char *a, char *b) { a=b; (*a)++; } void main( )

{ char c1='A', c2='a', *p1, *p2; p1=&c1; p2=&c2; fun(p1,p2);

cout<

(C) 3 3 (C) A b (D) 5 3 (D) b B

}

(A) Ab (B) aa (C) Aa (D) Bb 19. 以下不正确的说法是( )。

(A) 在C++中,一个程序中的函数名不一定是唯一的

(B) 在C++中,定义函数时,在返回值数据类型的前面加上关键字inline,这种函数称为内联函数

(C) 在C++中,不允许有两个及以上的函数使用同一个函数名

(D) 在定义函数时,还可以对形式参数进行初始化,即给该形式参数指定默认值。 20. 以下正确的说法是( )。

(A) 全局变量如果没有指定初值,则其初值为 0 (B) 静态变量如果没有指定初值,则其初值为 0 (C) 局部变量如果没有指定初值,则其初值为 0

(D) 函数中的静态变量在函数每次调用时,都会重新设置初值

第7章 面向对象程序设计基础

一、填空题

1. 申明类的成员为私有类型的关键字是_________________________。 2. 对象通过成员运算符只能调用类的_____________________成员。

3. 通过类定义对象时,对象会自动调用类的_____________________函数。 4. 对象消亡时,类的___________________函数会被自动调用。

5. 在类A的基础上,通过增加成员可以产生新的类B。由类A产生类B的过程称为

___________________,此时通常称类A为____________类,类B为___________类。 6. 继承方式关键字为private时,基类的公共成员在派生类中是__________________成员。 一、判断题

( )1. 在关键字private后面声明的成员,只允许本类中的函数访问,而类外的任何函数都不能访问。

( )2. 因为构造函数不返回值,所以可以在构造函数名前加上void关键字。 ( )3. 类的对象是该类的某一特定的实体,即类类型的变量。

( )4. protected声明的成员,可由该类的成员函数以及由该类派生的类的成员函数使用。 ( )5. 析构函数不能重载。

( )6. 程序只可以通过类的公有成员访问该类的私有成员。 ( )7. 对象是类的模板,类是对象的实例化。

( )8. 类是一种既包含数据又包含函数的数据类型。 ( )9. 类的析构函数的作用是类的初始化。 ( )10. 基类是由派生类派生而来的。 ( )11. 类的构造函数的作用是删除对象。

( )12. 公有继承时基类中的private成员在派生类中仍是private的。 ( )13. 私有继承时基类中的public成员在派生类中是private的。 ( )14. 构造函数不能重载。

( )15. 一个类中可以有多个同名的成员函数。