C++习题与答案Word格式.docx
《C++习题与答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++习题与答案Word格式.docx(90页珍藏版)》请在冰豆网上搜索。
D.继承;
5.关于C++与C语言的关系的描述中,()是错误的。
A.C语言是C++的一个子集;
B.C语言与C++是兼容的;
C.C++对C语言进行了一些改进;
D.C++和C语言都是面向对象的;
6.下面关于对象概念的描述中,()是错误的。
A.对象就是C语言中的结构变量;
B.对象代表着正在创建的系统中的一个实体;
C.对象是一个状态和操作(或方法)的封装体;
D.对象之间的信息传递是通过消息进行的;
7.下面关于类概念的描述中,()是错误的。
A.类是抽象数据类型的实现;
B.类是具有共同行为的若干对象的统一描述体;
C.类是创建对象的样板;
D.类就是C语言中的结构类型;
8.C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成为面向对象。
A.增加了一些新的运算符;
B.允许函数重载,并允许设置缺省参数;
C.规定函数说明必须用原型;
D.引进了类和对象的概念;
9.按照标识符的要求,()符号不能组成标识符。
A.连接符;
B.下划线;
C.大小写字母;
D.数字字符;
10.下列符号中,()不可作为分隔符。
A.,;
B.:
;
C.?
D.;
二、判断下列描述的正确性,对者划√,错者划×
。
11
12
√
×
1.C++引进了引用的概念,对编程带来了很多方便。
Y
2.C++允许使用友元,但是友元会破坏封装性。
3.C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。
X
4.C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。
5.C++程序中,每条语句结束时都加一个分号(;
)。
6.C++中标识符内的大小写字母是没有区别的。
7.C++中不允许使用宏定义的方法定义符号常量,只能用关键字const来定义符号常量。
8.在编写C++程序时,一定要注意采用人们习惯使用的书写格式,否则将会降低其可读性。
9.C++是一种以编译方式实现的高级语言。
10.在C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。
11.预处理过程是一般编译过程之后连接过程之前进行的。
12.源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息。
三、分析下列程序的输出结果
1.BeiJjingShangHai
TianJing
2.Inputa,b:
85
a=8,b=5
a-b=3
3.d=5:
c=m
1.#include<
iostream.h>
voidmain()
{
cout<
<
"
BeiJing"
"
ShangHai"
\n"
TianJing"
endl;
}
2. #include<
inta,b;
inputa,b:
cin>
>
a>
b;
a="
a<
"
b="
b<
a-b="
a-b<
\n"
假定,输入如下两个数据:
3.#include<
charc=’m’;
intd=5;
d="
d<
:
c="
c<
四、编译下列程序,改正所出现的各种错误信息,并分析输出结果:
1、#include<
iostream>
voidmain()
Thisisastring!
2、#include<
voidmain()
{intx;
x;
intp=x*x;
p=”<
p<
”\n"
3、#include<
{ inti,j;
i=5;
j=0;
intk=i+j;
i+j="
k<
i+j=5
五、通过对第四题中三个程序的所出现问题的修改,回答下列问题:
1.从对第四题1题的修改中,总结出编程时应注意哪三个问题?
2.C++程序中所出现的变量是否都必须先说明才能引用?
3.使用cout和运算符<
输出字符串时应注意什么问题?
4.有些变量虽然说明了但是没有赋值,这时能否使用?
5.一个程序编译通过了并且运行后得到了输出结果,这个结果是否一定是正确的?
第二章 习题
无
13
14
15
16
17
18
19
20
21
22
23
24
1、在16位机中,int型字宽为()字节。
A.2;
B。
4;
C。
6;
D8
2、类型修饰符unsigned修饰()类型是错误的。
A.char;
B.int;
C.longint;
D、float
3、下列十六进制的整型数常数表示中,()是错误的。
A.0xaf;
B.0X1b;
C.2fx;
D.0xAE
4、下列double型常量表示中,()是错误的。
A.E15;
B..35;
C.3E5;
D.3E-5
5、下列字符常量表示中,()是错误的。
A.‘\105’;
B.‘*’;
C.‘\4f’;
D.‘\a’
6、下列字符串常量表示中,()是错误的。
A."
\"
yes\"
or\"
No\"
B."
\’OK!
\’"
C."
abcd\n"
D."
ABC\0"
7、下列变量名中,()是合法的。
A.CHINA;
B.byte-size;
C.double;
D.A+a
8、在inta[5]={1,3,5};
中,数组元素a[1]的值是()。
A.1;
B.0;
C.6;
D.2
9、在intb[][3]={{1},{3,2},{4,5,6},{0}};
中b[2][2]的值是()。
A.0;
B.5;
C.6;
D.2
10、下列给字符数组进行初始化中,()是正确的。
A.chars1[]="
abcd”;
B.chars2[3]="
xyz"
C.chars3[][3]={‘a’,’x’,’y’};
D.chars4[2[3]={"
mnp"
};
11、在inta=3,*p=&
a;
中,*p的值是()。
A.变量a的地址值;
B.无意义;
C.变量p的地址值;
D.3
12、对于int*pa[5];
的描述,()是正确的。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素;
B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;
C.pa[5]表示某个数组的第5个元素的值;
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针;
13、下列关于指针的运算中,()是非法的。
A.两个指针在一定条件下,可以进行相等或不等的运算;
B.可以用一个空指针赋值给某个指针;
C.一个指针可以加上两个整数之差;
D.两个指针在一定条件下,可以相加。
14、指针可以用来表示数组元素,下列表示中()是错误的。
已知:
inta[3][7];
A.*(a+1)[5];
B.*(*a+3);
C.*(*(a+1));
D.*(&
a[0][0]+2)
15、下列表示引用的方法中,()是正确的。
intm=10;
A.int&
x=m;
B.int&
y=10;
C.int&
z;
D.float&
t=&
m
16、下列各运算符中,()可以作用于浮点数。
A.++;
B.%;
C.>
D.&
17、下列各运算符中,()不能作用于浮点数。
A./;
B.&
&
C.!
D.~
18、下列各运算符中,()优先级最高。
A.+(双目);
B.*(单目);
C.<
=;
D.*=
19、下列各运算符中,()优先级最低。
A.?
:
;
B.|;
C.||;
D.!
=
20、下列各运算符中,()结合性从左到右。
A.三目;
B.赋值;
C.比较;
D.单目
21、下列表达式中,()是非法的。
inta=5;
floatb=5.5;
A.a%3+b;
B.b*b&
++a;
C.(a>
b)+(int(b)%2);
D.---a+b
22、下列表达式中,()是合法的。
doublem=3.2;
intn=3;
A.m<
2;
B.(m+n)|nC.!
m*=n;
D.m=5,n=3.1,m+n
23、下列关于类型转换的描述中,()是错误的。
A.在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型;
B.逗号表达式的类型是最后一个表达式的类型;
C.赋值表达式的类型是左值的类型;
D.在由底向高的类型转换中是保值映射。
24、下列各表达式中,()有二义性。
inta(5);
b(6);
A.a+b>
3;
B.++a+b++;
C.b+(a=3);
D.(a=3)-a++
二、判断下列描述是否正确,对者划√,错者划×
1、任何字符常量与一个任意大小的整型数进行加减都是有意义的。
2、转义序列表示法只能表示字符不能表示数字。
3、在命名标识符中,大小写字母是不加区别的。
4、C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。
5、C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。
6、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。
7、枚举变量的取值受到该枚举变量所对应的枚举表中的枚举符的局限。
8、指针是用来存放某种变量的地址值的变量。
这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针。
9、引用是用来给某个变量以别名的变量。
,对引用的操作,实质上就是对被引用的变量的操作。
10、运算符的优先级和结合性可以确定表达式的计算顺序。
11、在说明语句中,的值和的值是相等的。
12、已知