第 1 章 C++语言概述
练习题 1
1.1 判断题
×1.C++语言和 C 语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C 语言是 C++语言的一个子集。C++语言继承了 C 语言。
×4.C++语言程序与 C 语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比 C 语言对数据类型要求更加严格了。
√7.C++语言对 C 语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译 C++源程序时,出现了警告错(Warning)也可以生成可执行文件。
√10.C++语言程序的实现也要经过编辑、编译连接和运行 3 个步骤。
1.2 单选题
1.下列关于面向对象概念的描述中,错误的是( C )。
A.面向对象方法比面向过程方法更加先进
B.面向对象方法中使用了一些面向过程方法中没有的概念
C.面向对象方法替代了结构化程序设计方法
D.面向对象程序设计方法要使用面向对象的程序设计语言
2.下列各种高级语言中,不是面向对象的程序设计语言是( D )。
A.C++
C.VB
B.Java
D.C
3.下列关于类的描述中,错误的是( A )。
A.类就是 C 语言中的结构类型
B.类是创建对象的模板
C.类是抽象数据类型的实现
D.类是具有共同行为的若干对象的统一描述体
4.下列关于对象的描述中,错误的是( C )。
A.对象是类的一个实例
B.对象是属性和行为的封装体
C.对象就是 C 语言中的结构变量
D.对象是现实世界中客观存在的某种实体
5.下列关于 C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是( C )。
A.提取符是对右移运算符(>>)重载得到的
B.插入符是对左移运算符(<<)重载得到的
C.提取符和插入符都是双目运算符,它们要求有两个操作数
D.提取符和插入符在输入/输出语句中不可以连用
1.3 填空题
1.C++语言具有面向对象方法中要求的三大特性: 封装性 、 继承性 和 多态性 。
2.C++程序中,有且仅有一个 主 函数。
3.C++程序是由 类 和 函数 组成的。
1
4.C++源程序的扩展名是 cpp 。
5.使用插入符进行标准输出文件输出时,使用的输出流对象名是 cout 。
1.4 上机调试下列程序,并分析输出结果
1.
#include
void main()
{
int i,j;
cout<<"Enter i j: ";
cin>>i>>j;
cout<<"i="<
int max(int,int);
void main()
{
int a,b,c;
a=5;
b=8;
c=max(a,b);
cout<<"max("<y?x:y;
}
答: max(5,8)=8
3.文件 e1.4.3.cpp 内容如下:
#include
void f1(),f2();
void main()
{
cout<<"在北京.\n";
f1();
f2();
cout<<"再见.\n";
2
cin>>a;
int b=a+a;
cout<<"b=”<
void main()
{
int i,j;
i=5;
int k=i+j;
COUT<<"i+j="<
void main()
{
int i,j;
j=10;
i=5;
int k=i+j;
cout<<"i+j="<
第 2 章 变量和表达式及数组
练习题 2
2.1 判断题
√ 1.C++语言的合法字符集与 C 语言的完全相同。
× 2.标识符规定大小写字母没有区别。
× 3.C++程序中,不得使用没有定义或说明的变量。
√ 4.变量的存储类指出了变量的作用域和寿命。
√ 5.变量的数据类型指出了变量在内存中存放的字节数。
× 6.定义变量时,变量的存储类说明符不得省略。
× 7.自动类变量与内部静态类变量的作用域和寿命都是相同的。
× 8.自动类变量可以定义在函数体外,这时应加说明符 auto。
× 9.外部类变量与外部静态类变量的作用域是相同的。
× 10.变量被定义后是否有默认值与存储类无关,与数据类型有关。
√ 11.C++程序中,通常使用 const 来定义符号常量,定义时必须指出类型。
× 12.变量被定义或说明后,它一定具有有意义的值。
× 13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另
一个用单撇号。
× 14.所有变量的可见性和存在性都是一致的。
√ 15.变量在它的作用域内一定是可见的,又是存在的。
√ 16.C++语言中除了包含 C 语言的所有运算符外,还规定自身的若干个运算符。
√ 17.增 1 和减 1 运算符以及赋值运算符都具有副作用。
× 18.增 1 和减 1 运算符不仅可以作用在变量上,也可以作用在表达式上。
× 19.关系运算符可以用来比较两个字符的大小,也可以比较两个字符串的大小。
× 20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补 0。
× 21.变量的类型高低是指它被存放在内存的地址值大小。
× 22.使用 sizeof 运算符可以求得某种类型和某个变量在内存中占的字节数,不能求
得某个表达式的类型在内存中所占的字节数。
√ 23.在 C++语言中,非保值转换应用强制类型转换。
√ 24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。
√ 25.在 C++程序中,变量值是可以改变的,变量的地址值是不能改变的。
√ 26.数组中所有元素的类型都是相同的。
× 27.定义数组时必须对数组进行初始化。
√ 28.数组某维的大小可以用常量表达式,不可用变量名。
× 29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。
√ 30.用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个
数。
× 31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意
义的。
√ 32.数组被初始化时是判越界的。
× 33.字符数组就是字符串。
√ 34.使用 printf( )函数输出显示字符串时使用格式符%s,输出显示字符时使用%c 或
5
%d。
× 35.给数组元素赋值时只可用常量表达式。
2.2 单选题
1.下列变量名中,非法的是( C )。
A.A25
C.My-str
B.My_car
D.abc
2.下列常量中,十六进制 int 型常量是( A )。
B.x2a
D.7a
3.下列常量中,不是字符常量的是( B )。
A.0x5f
C.046
A.'\n'
C.'x'
B."y"
D.'\7'
4.在函数体内定义了下述变量 a,a 的存储类为( D )。
int a;
A.寄存器类
C.静态类
B.外部类
D.自动类
5.下列关于变量存储类的描述中,错误的是( C )。
A.任何变量定义后都具有一个确定的存储类
B.变量的存储类确定了变量的作用域和寿命
C.定义变量时没有存储类说明符者一律为自动类
D.内部静态类变量和外部静态类变量的存储类说明符都是 static
6.下列关于变量数据类型的描述中,错误的是( A )。
A.定义变量时 int 型数据类型可以省略
B.变量的数据类型可以决定该变量占内存的字节数
C.变量的数据类型是可以被强制的
D.变量的数据类型是有高低之分的
7.长双精度浮点型常量的后缀是( C )。
B.F
D.无
A.U
C.L
8.下列运算符中,不能用于浮点数操作的是( D )。
A.++
C.*=
B.+
D.&(双目)
A.*(双目)
C.>>
9.下列运算符中,优先级最高的是( A )。
B.||
D.%=
10.下列运算符中,优先级最低的是( B )。
B.?:
D.&&
A.==
C.|
11.已知:int a(3);下列表达式中,错误的是( C )。
A.a%2==0
C.(a2)++
B.a--+2
D.a>>=2
12.已知:int b(5),下列表达式中,正确的是( D )。
A.b="a"
C.b%2.5
B.++(b1)
D.b=3,b+1,b+2
6
13.下列关于类型转换的描述中,错误的是( C )。
A.类型转换运算符是(<类型>)
B.类型转换运算符是单目运算符
C.类型转换运算符通常用于保值转换中
D.类型转换运算符作用于表达式左边
14.下列表达式中,其值为 0 的是( A )。
B.!0
D.2&&2||0
A.5/10
C.2>4?0:1
15.下列表达式中,其值不为逻辑值的是( A )。
A.算术表达式
C.逗号表达式
B.关系表达式
D.逻辑表达式
16.下列关于数组概念的描述中,错误的是( B )。
A.数组中所有元素类型是相同的
B.数组定义后,它的元素个数是可以改变的
C.数组在定义时可以被初始化,也可以不被初始化
D.数组元素的个数与定义时的每维大小有关
17.下列关于数组维数的描述中,错误的是( C )。
A.定义数组时必须将每维的大小都明确指出
B.二维数组是指该数组的维数为 2
C.数组的维数可以使用常量表达式
D.数组元素个数等于该数组的各维大小的乘积
18.下列关于数组下标的描述中,错误的是( B )。
A.C++语言中数组元素的下标是从 0 开始的
B.数组元素下标是一个整常型表达式
C.数组元素可以用下标来表示
D.数组元素的某维下标值应小于该维的大小值
19.下列关于初始值表的描述中,错误的是( C )。
A.数组可以使用初始值表进行初始化
B.初始值表是用一对花括号括起的若干个数据项组成的
C.初始值表中数据项的个数必须与该数组的元素个数相等
D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值
20.下列关于字符数组的描述中,错误的是( D )。
A.字符数组中的每一个元素都是字符
B.字符数组可以使用初始值表进行初始化
C.字符数组可以存放字符串
D.字符数组就是字符串
21.下列关于字符串的描述中,错误的是( C )。
A.一维字符数组可以存放一个字符串
B.二维字符数组可以存放多个字符串
C.可以使用一个字符串给二维字符数组赋值
D.可以用一个字符串给二维字符数组初始化
22.已知:int a[5] = {1, 2, 3, 4}; 下列数组元素值为 2 的数组元素是( B )。
A.a[0]
C.a[2]
B.a[1]
D.a[3]
7
23.已知:int ab[ ][3] = {{1, 5, 6}, {3}, {0,2}}; 数组元素 ab[1][1]的值为( A )。
A.0
C.2
B.1
D.3
24.已知:char s[ ]="abcd";输出显示字符'c'的表达式是( C )。
A.s
C.s[2]
B.s+2
D.s[3]
25.已知:char ss[ ][6]={"while", "for", "else", "break"};输出显示"reak"字符串的表达式是( B )。
A.ss[3]
C.ss+3
2.3 填空题
1.C++语言中,基本数据类型包含有整型、 浮点型 、 字符型 、空值型和 布尔
B.ss[3]+1
D.ss[3][1]
型 。
2.变量的存储类可分为 自动类 、 寄存器类 、 外邹类 和静态存储类。
3.浮点型常量可分为单精度、 双精度 和 长双精度 浮点型常量。
4.结合性从右至左的运算符有 单目运算符 、 双目运算符 和赋值运算符。
5.条件表达式是由 三目 运算符组成的,该表达式的类型是由冒号左边和右边两个
操作数中 类型高 的操作数类型决定的。
6.已知:double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; 这里dd是一个 二 维数组
的数组名,该数组共有 9 个元素,每个元素的类型是 double 。数组元素dd[0][0]
的值是 1.2 ,dd[1][1]的值是 5.2 ,数组元素dd[2][2]的值是 0 。
7.已知:char ss[ ][6]={"while", "break", "for", "else"}; 字符数组ss是 二 维数组,
它的第 1 维大小应该是 4 。使用cout和<<输出字符串"for"时,对应的表达式是 ss+2 。使用
cout和<<输出字符串"break"的子串"reak"时,对应的表达式是 ss[1]+1 。使用cout和<<输出
字符串else中的字符's'时,对应的表达式是 ss[3][2] 。
2.4 分析下列程序
1.
#include
void main()
{
int a,b;
cout<<"Enter a b: ";
cin>>b>>a;
int d=a-b;
cout<<"d="<
void main()
{
const int A=8;
const char CH='k';
8