C++常见选择填空习题集

更新时间:2024-05-07 22:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章概述

一、选择题

1. 关于C++与C语言的关系描述中,错误的是( )

A. C语言与C++是兼容的 B. C语言是C++的一个子集 C. C++和C语言都是面向对象的 D. C++对C语言进行了一些改进

2. 不可以作为C++用户标识符的是( )

A. Printf B. _123 C. While D. case

3. 由C++目标文件连接而成的可执行文件的缺省扩展名为( ) A. cpp B. obj C. lib D. exe

4. 关于C和C++的描述中,正确的是( )

A. C是面向过程,C++是纯面向对象 B. C++是C的超集 C. C++是对C的错误的修改 D. C++和C没有关系

5. C++对C作了很多改进,从面向过程成为面向对象的主要原因是( )

A. 增加了一些新的运算符 B. 允许函数重载,并允许设置参数默认值 C. 规定函数必须用原型 D. 引进了类和对象的概念

6. 将高级语言编写的源程序翻译成目标程序的是( )

A. 解释程序 B. 编译程序 C. 汇编程序 D. 调试程序

7. C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的

最大改进是( )

A. 面向过程 B. 面向对象 C. 安全性 D. 复用性

8. C++语言支持过程程序设计方法和( )设计方法。

A. 面向对象 B. 面向函数 C. 面向用户 D. 面向问题

9. 关于C++和C的关系中,使C发生了质的变化,即从面向过程变成为面向对象的是( ) A. 增加了新的运算符 B. 允许函数重载,并允许缺省参数 C. 规定函数有原型 D. 引进了类和对象的概念

10. C++语言最有意义的方面是支持( )

A. 面向事件 B. 面向程序 C. 面向对象 D. 面向用户

11.下列说法中,正确的是( )

A. C++程序总是从第一个定义的函数开始执行

B. C++程序总是从主函数开始执行

C. C++函数必须有返回值,否则不能调用此函数

D. C++程序中有调用关系的所有函数必须放在同一个源程序文件中

12. 下列描述中,正确的是( )

A. 程序就是软件 B. 软件开发不受计算机系统的限制

C. 软件既是逻辑实体,又是物理实体 D. 软件就是程序、数据与相关文档的集合

13. 为了使模块尽可能独立,要求( )

A. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

14. 下列说法中正确的是( )

A. 数据流图详细描述了系统中对象数据是如何计算的 B. 数据流图详细描述了操作和约束的含义 C. 数据流图中不能有过程 D. 数据流图定义了对象的操作

15. 在C++语言中,自定义的标识符( )

A. 能使用关键字并且不区分大小写 B. 不能使用关键字并且不区分大小写 C. 能使用关键字并且区分大小写 D. 不能使用关键字并且区分大小写

16. 不能用于组成C++程序标识符的是( )

A. 连接符 B. 下划线 C. 大小写字母 D. 数字字符

17. 下列标识符中都是合法的是( )

A. _key, example, a_b B. 5ap, test1, _3a C. bcp, @mail, _c_d D. INL, _paper, union

18. 下列符号中,不可作为分隔符的是( )

A. 逗号 B. 分号 C. 问号 D. 英文句号

19. 下列变量名中,合法的是( )

A. CHINA B. byte-size C. double D. A+a

20. 在C++语言中,自定义的标识符( )

A. 能使用关键字并且不区分大小写 B. 不能使用关键字并且不区分大小写 C. 能使用关键字并且区分大小写 D. 不能使用关键字并且区分大小写

21. C++程序的基本单位是( )

A. 字符 B. 程序行 C. 语句 D. 函数

22. 注释的目的主要是用来提高( )

A. 可读性 B. 可移植性 C. 运行效率 D. 编码效率 23. 程序中的注释部分( )

A. 参加编译,并会出现在目标程序中 B. 参加编译,但不会出现在目标程序中 C. 不参加编译,但会出现在目标程序中 D. 不参加编译,也不会出现在目标程序中

24. 在一个C++程序中( )

A. main函数必须出现在所有函数之前 B. main函数可以在任何地方出现 C. main函数必须出现在所有函数之后 D. main函数必须出现在固定位置

25. C++语言可执行程序的开始执行点是( )

A. 程序中第一条可执行语言 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的函数

26. 以下关于C++语言的叙述中,错误的是( ) A. 大写字母和小写字符的意义相同

B. 有些不同类型的变量可以在一个表达式中运算

C. 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D. 同一个运算符号在不同的场合可以有不同的含义

二、填空题

1. 判断一种计算机语言是否为面向对象程序设计语言的三个基本特征是封装性 、继承性和 多态性 。

2. 在面向对象语言中 可扩充性 是关键。 3. 在C++语言中,“/*?*/”主要用于多行 行注释,“//”用于单 行注释。 4. C++程序的实现经过编辑 、编译 和运行 步骤。

5. 在一个好的程序中,注释可提高程序的 程序的可读性。 6. C++源程序文件的默认扩展名为.cpp 。

7. C++程序在编译中会出现的两类错误分别是致命错误和警告 错误。

8. C++编译器进行编译的过程可详细地分为三个子过程,它们分别是预处理过程、编译过程和连接过程。

第二章数据类型与表达式

一、选择题

1. 常量3.14的数据类型是( )

A. double B. float C. void D. 字符串

2. 设有定义:char ch;,以下赋值语句正确的是( )

A. ch='123'; B. ch='\\xff'; C. ch='\\08'; D. ch='\\\\';

3. 英文大写字母B的ASCII码为42H,英文小写字母b的ASCII码为( ) A. 43H B. 62H C. 74H D. 84H 4. unsigned不能修饰的类型是( )

A. int B. char C. float D. long int

5. 下列字符常量表示中,错误的是( )

A. .\\105. B. .*. C. .\\4f. D. .\\a.

6. signed不能修饰的类型是( )

A. int B. char C.double D. long int

7. 下列字符串常量表示中,错误的是( ) A. ”\\”Yes\\” or \\”No\\”” B. ”\\.OK!\\.” C. ”abcd\\n” D. ”AB\\C”

8. 下列十六进制的整型常量表示中,错误的是( ) A. 0xaf B. 0X1b C. 2fx D. 0xAE

9. 下列double型常量表示中,错误的是( )

A. E15 B. .25 C. 3E5 D. 3E05

10. 设有定义char ch;,正确的赋值语句是( )

A. ch=.123.; B. ch=.\\xff.; C. ch=.\\08. D. ch=.\\\\.

11在C++语言中,080是( )

A. 八进制数 B. 十进制数 C. 十六进制数 D. 非法数

12. 关于字符'\\0'的下列描述中不正确的是( )

A. 常用来作为字符串的结束标志 B. 在计算机中存储时占一个字节的内存 C. 是空格字符的转义表示形式 D. 作为逻辑值使用时等价于逻辑“假”

13. 在32位机器环境下,若有int a[10];,则表达式sizeof(a)/sizeof(int)的值是( ) A. 10 B. 4 C. 40 D. 2

14. 在C++语言中,char型数据在内存中的存储形式是( ) A. ASCII码 B. 补码 C. 反码 D. 原码

15. 字符串”\\\\\\”ABC\\”\\\\”的长度是( ) A. 11 B. 7 C. 8 D. 6

16. 设:int a=2, b=2;,则a++ +b的结果是( ) A. 2 B. 3 C. 4 D. 5

17. 若有定义:int x=2;,则表达式x<<2的结果为( )

A. 2 B. 4 C. 8 D. 16

18. 已知:int a=5,b=6;,则下列表达式中,有二义性的是( ) A. a+b>>3 B. ++a+b++ C. b+(a=3) D. (a=3)-a++

19. 下列运算符中优先级最高的是( )

A. = B. && C. >= D. +

20. 下列运算符中优先级最低的是( )

A. % B. %= C. & D. >>

21. 表达式(-17)%5的值( )表达式(-17)%(-5)的值。

A. 大于 B. 等于 C. 小于 D. 不确定

22. 下列运算符中,结合性从左向右的是( )

A. -> B. >> C. != D. ~

23. 若int a=2,b=3;,则表达式a++ +b++的值为( ) A. 11 B. 9 C. 7 D. 5

24. 设有定义int a; float f; double i;,表达式10+.a.+i*f的结果类型是( ) A. int B. float C. double D. 不确定

25. sizeof(double)是一个( )

A. 整型表达式 B. 双精度表达式 C. 函数调用 D. 不合法

26. 下列关于类型转换的描述中错误的是( )

A.在不同类型操作数组成的表达式中,表达式类型一定是最高类型double型 B. 逗号表达式的类型是最后一个子表达式的类型 C. 赋值表达式的类型是左值的类型 D. 在由低向高的类型转换中是保值映射

27. 下列说法中正确的是( )

A. 隐含类型转换可能会损失数据精度 B. 显式类型转换可能会损失数据精度 C. 隐含类型转换一定会损失数据精度 D. 显式类型转换一定会损失数据精度

28. 在隐含类型转换中,long、int、double三种类型之间的转换顺序为( ) A. long->int->double B. long->double->int C. int->double->long D. int->long->double

29. 下列说法正确的是( )

A. 隐含类型转换可以从高类型转换为低类型 B. 显式类型转换不可以从低类型转换为高类型 C. 隐含类型转换可以在任何类型之间转换

D. 显式类型转换可以在任何类型之间转换

30. 设int n=10,i=4;,则表达式n%=i+1运算后n的值是( ) A. 0 B. 3 C. 2 D. 1

31. 下列运算符中,可以作用于浮点数的是( ) A. ++ B. % C. >> D. &

32. 下列各运算符中,不可以作用于浮点数的是( ) A. / B. && C. || D. ~

33. 下列运算符中,可以作用于浮点数的是( ) A. ++ B. % C. >> D. ^

34. 下列运算符中,结合性从左到右的是( )

A. ?: B. *= C. == D. ++

35. 若有下面的定义,则表达式:a

A. 1 B. 2 C. 3 D. 4

36. 设x为int型变量,则执行下列语句后,x的值为( ) x=10;

x+=x-=x-x;

A. 10 B. 20 C. 30 D. 40

37. 若有下面的定义,则对语句c=a+b;的下列说法中正确的是( ) int a=12;

float b=1.2f, c;

A. 变量a转换为float类型

B. 变量b转换为int类型,运算结果再转换为float类型

C. 变量a和b都转换为一中间类型,运算结果再转换为float类型 D. 以上都不对

38. 执行下列语句后,a的值是( )

int a = 8; a += a -= a*a;

A. -240 B. 64 C. 112 D. -112

39. 能正确表示“大于10且小于20的数”的C++表达式是( )

A. 1010||x<20 C. x>10&x<20 D. !(x<=10||x>=20)

40. 表示关系x≤y≤Z的C++语言表达式为( ) A. (x<=y)&&(y<=Z) B. (x<=y)AND(y<=Z) C. (x<=y<=Z) D. (x<=y)&(y<=Z)

41. 设x, y, z均为int型变量,则执行以下语句后,t的值为( ) x=y=z=1;

t=++x||++y&&++z;

A. 0 B. 1 C. 2 D. 不定值

42. 若有如下语句: int a,b,c; a=b=c=5; 则执行语句: b+=++a&&++c>b;

后a、b、c的值分别为( )

A. 6,7,6 B. 6,6,6 C. 6,6,5 D. 6,1,6

43. 在C++中,const修饰符主要用于代替C语言中的( )关键字进行常量定义。 A. #include B. static C. #define D. #ifdef

二、填空题

1. 在32位计算机中,若有double *p;,则p占用 4字节的内存空间。 2. 在C++中,用同一个数据类型定义多个变量时需要用逗号分隔。

3. 变量的三要素分别是(变量的)类型、(变量的)名字(或变量名)、(变量的)值。 4. 表达式(-9)%4的值为-1 ,表达式9%(-4)的值为1 ,表达式(-9)%(-4)的值为-1 5. 在C++中,’\\0’ 被用来作为字符串的结束符。 6. 空字符串的长度为1。

7. 在C++中,变量必须遵循先定义后使用的原则。 8. 在16位计算机中,int数据类型占用2个字节。

9. 数据类型转换分为自动类型转换(隐含类型转换)和强制类型转换(显式类型转换)两种。 10. 在32位机器中,若有:int a[10];则表达式sizeof(a)/sizeof(int)的值为10。 11. 在32位机器中,若有:int a[10];则表达式sizeof(a)的值为40。 12. 变量的类型既规定了占用内存字节数(大小) ,也规定了合法操作。 13. 没有初始化的变量其存储的值要么是默认值,要么是 机器(计算机)决定。

15. 条件表达式的类型由:号前后两个子表达式的高类型决定。 16.赋值表达式的类型由赋值运算符的左值的类型决定。 17. 逻辑运算符&&和||的特点是在计算时存在短路现象。 18. 若有定义: int a(4), b(2);

则表达式 a&&b||a++||(a-b*2) 运算完成后a的值为4 。

19. 设int型变量x的值为10,则表达式x>10?x+100:x-100的值是-90。

三、写程序运行结果

1. #include using namespace std; int main() {

float x; int i; x=12.6; i=(int)x;

cout<<\cout<<\}

x=12.6 y=12

2. #include using namespace std; int main() {

int i; char c1; i='A'; c1='A';

cout<

3. #include using namespace std; int main() {

cout<<\cout<<\}

abc\\\abc\\\\abc

4. #include using namespace std;

int main() {

int i=1;

cout<<\cout<<\} i=2 i=2

5. #include void main() {

int a;

a=7*2+-3%5-4/3; double b;

b=510+3.2-5.4/0.03; cout<

cout<

10 333.2 0 4t3

6. #include void main() {

int x,y,z; x=y=z=1;

--x && ++y && ++z;

cout<

cout<

cout<

0 1 1 1 2 2 2 1 2

7. #include

void main() {

char x('m'),y('n'); int n; n=x

cout<

cout<

n=('y'!='Y')+(5>3)+(y-x==1); cout<

四、改错题

1. 下面程序要求输出x和y的值,x的值为10,y的值为11。

#include using namespace std; void main() { const int x; int y=10; y=x++; cout<

第三章语句

一、选择题

1. 关于switch语句的描述中,正确的是( )

A. switch语句中default子句可以没有,也可有一个 B. switch语句中每个case语句序列中必须有break语句 C. switch语句中default子句只能放在最后

D. switch语句中case子句后面的表达式只能是整型表达式

2. 下列关于goto语句的描述中正确的是( ) A. goto语句可以在一个文件中随意转向 B. goto语句后面要跟上一个它所转向的语句

C. goto语句可以同时转向多条语句

D. goto语句可以从一个循环体内转到循环体外

3. 与以下程序段等价的是( ) while(a) { if(b) continue; c; }

A. while(a) { if(!b) c; } B. while(c) { if(!b) break; c; } C. while(c) { if(b) c; } D. while(a) { if(b) break; c; }

4. 在设计C++程序时,应采用的原则之一是( )

A. 不限制goto语句的使用 B. 减少或取消注释行

C. 程序越短越好 D. 程序结构应有助于读者理解

5. for(int m=n=0; !n&&m<=10; m++);语句的循环次数为( ) A. 10 B. 11 C. 12 D. 无限

6. 下面的do语句的循环体执行次数为( ) int a=10;

do { a--; }while(a!=0);

A. 10 B. 9 C. 11 D. 12

7. 下列for循环的循环体执行次数为(假设循环体中没有引用i和j)( ) for(int i=0, j=10; i=j=10; i++,j--)循环体; A. 0 B. 1 C. 10 D. 无限

8. 下列关于if语句的描述中错误的是( )

A. if语句中只有一个else子句 B. if语句中可以有多个else if子句 C. if语句中if体内不能是开关语句 D. if语句的if体中可以是循环语句

9. 下面的程序( ) #include void main() {

int a=5, b=4, c=3;

if( a = b+c ) cout<<”***”<

A. 有语法错误,不能通过编译 B. 可以通过编译但不能通过连接 C. 输出*** D. 输出$$$

10. 为了避免嵌套的if-else语句的二义性,C++规定else总是与( )组成配对关系。 A. 缩排位置相同的if B. 在其之前未配对的if C. 在其之前未配对的最近的if D. 同一行上的if

11执行下列程序,输入为1时的输出结果是( ) #include void main() {

int k; cin>>k; switch(k) {

case 1: cout<

case 4: cout<

cout<

A. 1 B. 2 C. 2 3 4 5 D. 1 2 3 4

12. 下列while循环的循环次数为( ) while(int i=0)i--;

A. 0 B. 1 C. 5 D. 无限

13. 下列do-while循环的循环次数为( ) 已知:int i=5;

do { cout << i-- <

14. 下列描述正确的是( )

A.不是每个C++程序都必须包含预处理命令#include B. C++程序必须有return语句

C. C++程序中的变量必须定义在主程序内部 D. C++程序中所使用的符号常量可以不进行定义

15. 已知int x,y;,下列switch语句中,正确的是( ) A. switch(x*y) B. switch { {

case 1: x*y; break; case 1,5: x++; case 2: break; case 3,7: y++; } }

C. switch(x) D. switch(x+y/100) { {

case x: x*x; break; case x: x*x/100; break; case y: y*y; break; case y: y*y/100; break;

} }

16. 下列关于goto语句的描述中正确的是( ) A. goto语句可以在一个程序中随意转向。 B. 循环体中不能出现goto语句

C. goto语句后面要跟上一个它所要转向的语句 D. goto语句不是结构化语句

17.执行以下程序段的输出结果是( ) int s1=0,s2=0,s3=0,s4=0; for(int t=1;t<=4;t++) switch(t){

case t>=4:s1++;break; case t>=3:s2++;break; case t>=2:s3++;break; default:s4++; }

cout<

A. 1,1,1,2 B. 1,2,3,2 C. 1,1,2,2 D. 编译不通过

18. 执行for(int i=10; i>1; --i) cout<<.*.;语句段后,输出字符“*”的个数是( ) A. 7 B. 8 C. 9 D. 10

二、写程序运行结果

1. 写出下面的程序的运行结果 #include #include void main() {

int i,j,k;

for(i=1; i<=6; i++) {

for(j=1; j<=20-2*i; j++) cout<<” ”; for(k=1;k<=i; k++) cout<

2. 写出下面的程序的运行结果 #include #include void main() {

int i,j,k;

for(i=1; i<=6; i++) {

for(j=1; j<=20-3*i; j++) cout << ” “ ; for(k=1; k<=i; k++) cout << setw(3) << k ; for(k=i-1; k>0; k--) cout << setw(3) << k ; cout<

3. #include

char input[]=”SSSWILTECH1\\1\\11W\\1WALLMP1”; void main() {

int i; char c;

for(i=2; (c=input[i])!=’\\0’; i++) {

switch(c) {

case ‘a’: cout<<’i’; continue;

case ‘1’: break;

case 1: while((c=input[++i])!=’\\1’ && c!=’\\0’); case 9: cout<<’S’; case ‘E’:

case ‘L’: continue; default: cout<

cout<<” “; }

cout<

SWITCH SWAMP

4. #include void main() {

int a,b,c,s,i; a=b=c=0;

for(i=0; i<10; i++) {

cin>>s; switch(s%3) {

case 0: a+=s; break; case 1: b+=s; break; case 2: c+=s; break; } }

cout<

假定输入的10个整数为:12,34,54,51,9,45,63,27,6,35,写出该程序的运行结果。

267,34,35

5. #include void main() {

int i,j;

for(i=1; i<=4; i++) {

for(j=(4-i)*2; j>0; j--)cout<<” “; for(j=1; j<=2*i-1; j++)cout<<”*”; cout<

for(i=3; i>=1; i--) {

for(j=(4-i)*2; j>0; j--)cout<<” “; for(j=1; j<=2*i-1; j++)cout<<”*”;

using namespace std; int i=10;

int f1(int j) { static int i=20; j=i--; return j; }

int f2(int i) { int j=15;

return i=j+=i; }

void main() {

for (int j=1;j<3;j++)

cout<

20,26 19,27

4. #include using namespace std; int main() {

int max(int a,int b,int c); int max(int a,int b); int a=-11,b=-10,c=-3; cout<

int max(int a,int b,int c) { if (b>a) a=b; if (c>a) a=c; return a; }

int max(int a,int b) {

if (a>b) return a; else return b; } -10 -3

5. #include using namespace std;

long f(int n) {

if (n>2) return (f(n-1)+f(n-2)); else return (n); }

void main() { int a=4,b=2;

cout<

6. #include using namespace std; int a=5; void main() {

int b=a+20; int a=10; {

int a=0,b=0;

for (int i=1;i<6;i++) { a+=i; b+=a; } cout<<\}

cout<<\}

a+b=50 a+b=35

7. 写出下面的程序的运行结果 #include #define N 5 void func() {

static int a; int b=2;

cout<<(a+=3,a+b)<<” ”; }

void main() {

for(int i=1;i

cout<

5 8 11 14

8. #include \

void main() {

int a=5,b=7,c=10;

cout<

int b=8;

float c=8.8;

cout<

a=b; {

int c;

c=b;

cout<

cout<

cout<

9. #include

int a;

void main() {

int a(20); {

int a;

a=10;

::a=5;

cout<

cout<

cout<<::a<

10. 假定输入的10个字符为“abcedfghij”,写出下面的程序的运行结果

#include

void fun(int m)

{

char ch;

if(m<=1) { cin>>ch; cout<

else {

cin>>ch;

fun(m-1);

cout<

void main() {

fun(10); }

jihgfdeca

11. #include

void fun(int j) {

static int a(10);

int b(1);

b++;

cout<

本文来源:https://www.bwwdw.com/article/tnog.html

Top