没有合适的资源?快使用搜索试试~ 我知道了~
c++面向对象程序设计语言重点难点复习题及答案.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 82 浏览量
2023-02-27
20:21:43
上传
评论
收藏 1.28MB PDF 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/87510289/0001-2ef917874776e5ecf64d5ec2a6011ca1_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
53页
.
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/87510289/bg1.jpg)
1、数据共享与保护
一、选择题:
1、在下面存储类中, ( C ) 对象的可见性与生存期不一致。
A. 外部类 B. 自动类 C. 内部静态类 D. 寄存器类
2、在下面存储类中,( A )的对象不是局部变量。
A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类
3、关于局部变量,下面说法正确的是( C )。
A. 定义该变量的程序文件中的函数都可以访问
B. 定义该变量的函数中的定义处以下的任何语句都可以访问
C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问
D. 定义该变量的函数中的定义处以上的任何语句都可以访问
4、一个类的静态数据成员所表示属性 ( C )。
A. 是类的或对象的属性 B. 只是对象的属性
C. 只是类的属性 D. 类和友元的属性
5、类的静态成员的访问控制( D )。
A. 只允许被定义为 private
B. 只允许被定义为 private 或 protected
C. 只允许被定义为 public
D. 可允许被定义为 private、protected 或 public
6、静态成员函数对类的数据成员访问( B )。
A. 是不允许的 B. 只允许是静态数据成员
C. 只允许是非静态数据成员 D. 可允许是静态数据成员或非静
态数据成员
7、被非静态成员函数访问的类的数据成员( A )。
A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静态
数据成员
C. 只能是类的非静态数据成员 D. 只能是类的静态数
据成员
8、静态数据成员的初始化是在( D )中进行的。
A. 构造函数 B. 任何成员函数
C. 所属类 D. 全局区
9、当将一个类 A 或函数 f()说明为另一个类 B 的友元后,类 A 或函数 f()能够直
接访问类 B 的( D )。
A. 只能是公有成员 B. 只能是保护成员
C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员
10、引入友元的主要目的是为了( C )。
A. 增强数据安全性 B. 提高程序的可靠性
C. 提高程序的效率和灵活性 D. 保证类的封装性
11、 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明
( A )。
A. 需加上类域的限定 B. 不需加上类域的限定
C. 类域的限定可加可不加 D. 不需要任何限定
二、判断题
![](https://csdnimg.cn/release/download_crawler_static/87510289/bg2.jpg)
1、类的静态数据成员需要在定义每个类的对象时进行初始化。F
2、当将一个类 S 定义为另一个类 A 的友元类时,类 S 的所有成员函数都可以直
接访问类 A 的所有成员。T
3、静态数据成员必须在类外定义和初始化。T
4、静态成员函数可以引用属于该类的任何函数成员 F。
5、友元函数是在类声明中由关键字 friend 修饰说明的类的成员函数。F
6、友元函数访问对象中的成员可以不通过对象名 F
三、填空题:
1、若“double x=100;”是文件 F1.CPP 中的一个全局变量定义语句,若文
件 F2.CPP 中的某个函数需要访问此 x , 则应在文件 F2.CPP 中添加对 x 的声
明语句为 Extern double x;
2、如果一个函数定义中使用了 static 修饰,则该函数不允许被其它文件中的函
数调用。
3、定义外部变量时,不用存储类说明符 Extern,而声明外部变量时用它。
4、调用系统函数时,要先使用#include 命令包含该系统函数的原型语句所
在的头文件。
5、C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和代码区。
6、局部变量具有局部生存期,存放在内存的栈区中。
7、对类中对象成员的初始化是通过在构造函数中给出的初始化表来实现的。
8、对类中常量成员的初始化是通过在构造函数中给出的初始化表来实现的。
9、对类中引用成员的初始化只能通过在构造函数中给出的初始化表来实现。
10、对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表
来实现,也可以通过构造函数中的函数体来实现。
11、假定要把 aa 定义为 AB 类中的一个常量整数型数据成员,则定义语句
const int aa。
12、假定要把 aa 定义为 AB 类中的一个引用整数型数据成员,则定义语句为
int &aa。
13、假定 AB 类中只包含一个整型数据成员 a,并且它是一个常量成员,若利
用参数 aa 对其进行初始化,则该类的构造函数的定义为 AB (int aa){a=aa;}。
14、假定 AB 类中只包含一个整型数据成员 a,并且它是一个引用成员,若利
用 引 用 参 数 aa 对 其 进 行 初 始 化 , 则 该 类 的 构 造 函 数 的 定 义 为 AB(int
&aa){a=aa;}。
15、静态成员函数能够直接访问类的静态数据成员,只能通过对象名访问类
的非静态数据成员。
16、静态数据成员必须在所有函数的定义体外进行初始化。
17、一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须
在函数名前加上类域的限定。
四、修改程序题:
下列程序段中,A_class 的成员函数 Variance()可求出两数的平方差,请改写
该程序段,把 Variance()函数从 A_class 类中分离出来,用友元函数来实现该
函数的功能。
class A_class {
private:
![](https://csdnimg.cn/release/download_crawler_static/87510289/bg3.jpg)
int x,y,t;
public:
A_class(int i,int j):x(i),y(j) {
if(y>x){t=x;x=y;y=t;}
}
int Variance(){return x*x-y*y;}
//其它函数从略
};
void main() {
A_class A_obj(3,5);
cout<<"Result:"<<A_obj.Variance()<<endl;}
修改后的源程序:
class A_class {
private:
int x,y,t;
public:
A_class(int i,int j):x(i),y(j) {
if(y>x){t=x;x=y;y=t;}
}
friend int Variance();
//其它函数从略
};
int variance (){
return x*x-y*y;
}
void main() {
A_class A_obj(3,5);
cout<<"Result:"<<A_obj.Variance()<<endl;
2、数组、指针与字符串
一、
1、在下面的一维数组定义中,哪一个有语法错误。( C )
A. int a[]={1,2,3}; B. int a[10]={0};
C. int a[]; D. int a[5];
2、在下面的字符数组定义中,哪一个有语法错误。( D )。
A. char a[20]=”abcdefg”; B. char a[]=”x+y=55.”;
C. char a[15]; D. char a[10]=’5’;
3、在下面的二维数组定义中,正确的是( C )。
A. int a[5][]; B. int a[][5];
C. int a[][3]={{1,3,5},{2}}; D. int a[](10);
![](https://csdnimg.cn/release/download_crawler_static/87510289/bg4.jpg)
4、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元
素 a[1][2]的值为( C )。
A. 2 B. 4 C. 6 D. 8
5、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元
素 a[2][1]的值为( A )。
A. 0 B. 4 C. 8 D. 6
6、若定义了函数 double *function(), 则函数 function 的返回值为( B )。
A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址
7、以下函数的返回结果是( A )。
int function(char *x) {
char *p=x; while(*p++); return(p-x-1);
}
A. 求字符串的长度 B.将字符串 x 连接到字符串 p 后面
C. 将字符串 x 复制到字符串 p 中 D.将字符串 x 反向存放
8、设有如下函数定义
int f(char *s) {
char *p=s;
while(*p!=’\0’) p++;
return(p-s);
}
在主函数中用 cout<<f(“good”)调用上述函数, 则输出结果为( B )。
A. 3 B. 4 C. 5 D. 6
9、假定变量 m 定义为“int m=7;”,则定义变量 p 的正确语句为( B )。
A. int p=&m; B. int *p=&m; C. int &p=*m; D.
int *p=m;
10、变量 s 的定义为“char *s=”Hello world!”;”,要使变量 p 指向 s 所指
向的同一个字符串,则应选取( A )。
A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p;
p=&s
11、关于 void 指针,下列说法正确的是( C )。
A. void 指针就是未指向任何数据的指针
B. void 指针就是已定义而未初始化的指针
C. 指向任何类型数据的指针可直接赋值给一个 void 指针
D. void 指针值可直接赋给一个非 void 指针
12、假定一条定义语句为“int a[10], x, *pa=a;”,若要把数组 a 中下标为 3
的元素值赋给 x,则不正确的语句为( D )。
A. x=pa[3]; B. x=*(a+3); C. x=a[3]; D. x=*pa+3;
13、假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为( D )。
A. pb=b; B. pb=&b[0]; C. *pb=new int; D.
pb=b[5];
14、假定 p 是具有 double 类型的指针变量,则表达式++p 使 p 的值(以字节为
单位)增加( C )。
A. 1 B. 4 C. sizeof(double) D. sizeof(p)
15、假定 p 指向的字符串为”string”,则cout<<p+3 的输出结果为( C )。
![](https://csdnimg.cn/release/download_crawler_static/87510289/bg5.jpg)
A. string B. ring C. ing D. i
16、假定 p 指向的字符串为”string”,若要输出这个字符串的地址值,则使用
( D )。
A. cout<<*s; B. cout<<s; C. cout<<&s; D. cout<<(void *)s;
17、定义 p 并使 p 指向动态空间中的包含 30 个整数的数组所使用的定义语句为
( A )。
A. int *p=new int[30]; B. int *p=new int(30);
C. int *p=new [30]; D. *p=new int[30];
18、假定 p 是具有 int**类型的指针变量,则给 p 赋值的正确语句为( B )。
A. p=new int; B. p=new int*; C. p=new int**; D. p=new
int[10];
19、要使语句“p=new int[10][20];”能够正常执行,p 应被事先定义为( D )。
A. int *p; B. int **p; C. int *p[20]; D. int(*p)[20];
20、假定变量 a 和 pa 定义为“double a[10], *pa=a;”,要将 12.35 赋值给 a
中的下标为 5 的元素,不正确的语句是( D )。
A. pa[5]=12.35; B. a[5]=12.35;
C. *(pa+5)=12.35; D. *(a[0]+5)=12.35;
21、假定变量 b 和 pb 定义为“int b[10], *pb=b;”,要将 24 赋值给 b[1]元素
中,不正确的语句是( C )。
A. *(pb+1)=24; B. *(b+1)=24; C. *++b=24; D.
*++pb=24;
22、假定指针变量 p 定义为“int *p=new int(100);”,要释放 p 所指向的动态
内存,应使用语句( A )。
A. delete p; B. delete *p; C. delete &p; D. delete
[]p;
23、假定指针变量 p 定义为“int *p=new int[30];”,要释放 p 所指向的动态
内存,应使用语句( D )。
A. delete p; B. delete *p; C. delete &p; D. delete
[]p;
24、当类中一个字符指针成员指向具有 n 个字节的存储空间时,它所能存储字符
串的最大长度为( C )。
A. n B. n+1 C. n-1 D. n-2
25、在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包
含的指针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用
elemTail 表示,若链队非空,则进行插入时必须把新结点的地址赋给( D )。
A. elemHead B. elemTail
C. elemHead->next 和 elemHead D. elemTail->next 和 elemTail
26、在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包
含的指针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用
elemTail 表示,若链队为空,则进行插入时必须把新结点的地址赋给( C )。
A. elemHead B. elemTail
C. elemHead 和 elemTail D. elemHead 或 elemTail
剩余52页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/dfba069df9d743e89798b70d3e80af24_xxpr_ybgg.jpg!1)
xxpr_ybgg
- 粉丝: 6560
- 资源: 3万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)