admin 管理员组文章数量: 887021
2023年12月16日发(作者:format函数格式化字符串)
C++常见选择填空习题集
第一章 概述
一、选择题
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。 下列描述中,正确的是( )
C++常见选择填空习题集
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函数必须出现在固定位置
C++常见选择填空习题集
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 D. long int
7. 下列字符串常量表示中,错误的是( )
A. "”Yes” or "No"” B。 ".OK!。”
C. ”abcdn" D。 ”ABC"
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++的值为( )
C++常见选择填空习题集
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
int a=1, b=2, c=3, d=4;
A. 1 B。 2 C。 3 D。 4
36. 设x为int型变量,则执行下列语句后,x的值为( )
C++常见选择填空习题集
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. 10〈x〈20 B。 x〉10||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' 被用来作为字符串的结束符.
C++常见选择填空习题集
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<<"x=”〈〈x〈〈endl;
cout<<"i="〈
}
x=12。6
y=12
2. #include
using namespace std;
int main()
{
int i;
char c1;
i='A’;
c1=’A’;
cout<
cout<〈c1〈〈’n’;
return 0;
}
65
A
C++常见选择填空习题集
3。 #include 〈iostream>
using namespace std;
int main()
{
cout〈〈"abc"abc"〈 cout<〈”abcabc”〈 } abc"abc abcabc 4。 #include 〈iostream> using namespace std; int main() { int i=1; cout〈〈"i="<<++i< cout〈〈"i=”〈 } 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< int m(3),n(4); a=m++ - -—n; cout〈〈a<〈”t”〈〈m〈<”t”〈 } 10 333.2 0 4t3 6. #include void main() { int x,y,z; x=y=z=1; -—x && ++y && ++z; cout〈〈x〈〈't’<〈y<<’t’< ++x && ++y && ++z; C++常见选择填空习题集 cout<〈x〈<'t’〈 ++x && y-—||++z; cout〈〈x〈〈’t'〈〈y〈〈't'〈〈z<〈’n’; } 0 1 1 1 2 2 2 1 2 7。 #include void main() { char x(’m’),y(’n'); int n; n=x〈y; cout〈〈n< n=x==y-1; cout〈〈n<〈endl; n=(’y'!='Y')+(5>3)+(y-x==1); cout〈〈n< } 1 1 3 四、改错题 1。 下面程序要求输出x和y的值,x的值为10,y的值为11。 #include using namespace std; void main() { const int x; int y=10; y=x++; cout〈〈x,y; } 第三章 语句 一、选择题 1。 关于switch语句的描述中,正确的是( ) A。 switch语句中default子句可以没有,也可有一个 B。 switch语句中每个case语句序列中必须有break语句 C++常见选择填空习题集 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 〈iostream.h〉 void main() { int a=5, b=4, c=3; if( a = b+c ) cout〈<”***”<〈endl; else cout〈〈"$$$”〈 } A. 有语法错误,不能通过编译 B。 可以通过编译但不能通过连接 C. 输出*** D。 输出$$$ 10. 为了避免嵌套的if-else语句的二义性,C++规定else总是与( )组成配对关系。 A. 缩排位置相同的if B。 在其之前未配对的if C++常见选择填空习题集 C。 在其之前未配对的最近的if D. 同一行上的if 11执行下列程序,输入为1时的输出结果是( ) #include void main() { int k; cin〉>k; switch(k) { case 1: cout〈〈k++〈<” ”; case 2: cout〈 case 3: cout〈 case 4: cout<〈k++〈<” ”; break; default: cout〈<”Full!” 〈〈" ”; } cout<〈endl; } 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-— 〈 A。 1 B. 2 C. 5 D。 无限 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; } } C++常见选择填空习题集 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<〈s1〈〈',’〈 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〈〈setw(4)<〈i; cout< } } 2. 写出下面的程序的运行结果 #include #include void main() { C++常见选择填空习题集 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[]=”SSSWILTECH1111W1WALLMP1”; 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< continue; } cout〈〈” “; } cout< } SWITCH SWAMP 4。 #include 〈iostream。h> void main() { C++常见选择填空习题集 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〈〈a〈<”,”< } 假定输入的10个整数为:12,34,54,51,9,45,63,27,6,35,写出该程序的运行结果。 267,34,35 5. #include 〈iostream.h〉 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<〈endl; } for(i=3; i〉=1; i—-) { for(j=(4-i)*2; j>0; j--)cout〈〈” “; for(j=1; j<=2*i—1; j++)cout〈<"*”; cout< } } 三、改错题 1。 水仙花数是一个三位数,其各位数字的立方和等于该数本身。以下程序输出所有的水仙花数。 C++常见选择填空习题集 #include using namespace std; void main() { int i,a,b,c; for (i=100;i<1000;i++); { a=i/100; b=i%100/10; c=i/10; if (i=a*a*a+b*b*b+c*c*c) cout<〈i〈 } } 2。 #include 〈iostream。h〉 #include void main() { for(int n=1;n〈6;n++) cout<〈setfill(’ ')<〈setw(n)〈〈’ '< } 四、程序填空题 1。 求3到100之间的所有素数之和. #include 〈iostream.h> [1] #include void main() { int sum=0; for (int i=3; i〈=100; i++) { int temp=int(sqrt(i)); for (int j=2; j〈=temp; j++) if (i%j) [2] break; if ([3] j〉temp) sum+=i; } cout<〈sum〈〈endl; } 2。 展转相除法求两个整数a和b的最小公倍数。 #include using namespace std; void main() { int a=10,b=15; int temp,i=1; if ( [1]a while (i*a%b!=0) [2]i++ ; C++常见选择填空习题集 cout〈< [3]i*a 〈〈endl; } 3。下列程序计算1000以内能被3整除的自然数之和,请完成程序。 #include void main() { int x=1, sum; [1]sum=0; while(1) { if( [2]x>1000 )break; if( [3]x%3==0 )sum+=x; x++; } cout〈〈sum< } 第四章 函数与预处理 一、选择题 1。 若要定义一个只允许本源文件中所有函数能使用的全局变量,则该变量需要使用的存储类别是( ) A。 extern B. register C. auto D。 static 2. 函数的重载是指( ) A. 两个或两个以上的函数有相同的函数名,但函数形参的个数或类型不同 B. 两个以上的函数有相同的函数名和相同个数的参数,但形参的类型可以不同 C. 两个以上的函数有不同的函数名,但形参的个数或类型相同 D。 两个以上的函数有相同的函数名,并且函数的返回类型不同 3。 关于函数的描述中,正确的是( ) A。 函数的定义可以嵌套,函数的调用不可以嵌套 B。 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D。 函数的定义和函数的调用均不可以嵌套 4。 若有宏定义: #define S(x) (x)*(x) ,则表达式:2。7/S(3.0)在预编译过程中将( ) A。 被替换为2.7/3。0*3.0 B。 被替换为2.7/(3.0)*(3。0) C。 被替换为2。7/((3.0)*(3。0)) D. 不能被替换 5。 关于内置函数的说法中,不正确的是( ) A。 内置函数不需要使用堆栈进行现场的保护与恢复 B. 内置函数以牺牲程序的存储空间换取程序的执行时间 C。 内置函数体内不能有循环语句 D。 类的内置函数必须在类体外通过加关键字inline定义 C++常见选择填空习题集 6. 在函数定义前加上inline表示该函数被定义为( ) A. 重载函数 B。 内置函数 C。 成员函数 D. 普通函数 7. 关于设置C++函数参数默认值的描述中,正确的是( ) A. 不允许设置函数参数的默认值 B. 只能在定义函数时设置函数参数的默认值 C。 设置函数参数默认值时,应该是先设置右边的再设置左边的 D. 设置函数参数默认值时,应该全部参数都设置 8。 若同时定义了下列四个选项格式的函数和模板,fun(8,3。1)调用的是( ) A. template〈class T1,class T2)fun(T1,T2) B。 fun(double,int) C。 fun(char,char) D. fun(double,char) 9。 关于函数模板的叙述中,正确的是( ) A. 函数模板实际上是函数类型和形参类型不具体指定的通用函数 B. 函数模板可以用于描述函数体不同的一系列函数 C. 函数模板可以用于描述参数个数不同的一系列函数 D. 函数模板定义中typename和class的作用不同 10。 关于变量的存储类别的描述中,不正确的是( ) A. 变量的存储类别指的是变量值在内存中存储的方法 B。 变量的存储类别与变量值存在的时间有关 C. 变量的存储类别决定了变量占用内存的分配与释放时间 D。 变量的存储类别不能确定变量的作用域 11已知函数func的原型是:double func(double*pd,int &ri); 变量x和y的定义是:double x; int y; 把x和y分别作为第一参数和第二参数来调用func,正确的调用语句是( ) A。 func(x,&y); B. func(&x,y); C。 func(&x,&y); D。 func(x,y); 12。 关于递归函数的说法中,不正确的是( ) A. 递归函数可以改写为非递归函数 B. 递归函数应有递归结束的条件 C。 解决同一个问题的递归函数的效率比非递归函数的效率要高 D。 递归函数往往更符合人们的思路,程序更容易理解 13. 下列叙述中,正确的是( ) A。 预处理命令行必须位于源文件的开头 B. 在源文件的一行上可以有多条预处理命令 C。 宏名必须用大写字母表示 D. 宏替换不占用程序的运行时间 14. 关于函数模板的说法中,正确的是( ) A. 函数模板中typename和class用于定义不同的虚拟类型名 B。 能被函数模板代替的函数必须具有相同个数的形参 C。 函数模板的虚拟类型名由C++系统自动确定 D。 函数模板的虚拟类型名是在运行阶段确定实际类型的 15. 关于函数的说法中,错误的是( ) A。 函数定义是平行的 B. 函数可以嵌套调用 C. 函数可以嵌套定义 D。 函数可以递归调用 C++常见选择填空习题集 16。 定义一个函数模板要用到的第一个修饰符是( ) A。 typename B。 template C。 class D。 typedef 17. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( ) A。 内置函数 B. 重载函数 C. 递归函数 D. 函数模板 18。 不是重载函数调用时选择依据的是( ) A. 参数个数 B. 参数类型 C。 函数名字 D. 函数类型 19. 关于局部变量的说法中,不正确的是( ) A。 函数声明中的形式参数名在函数被调用时分配内存空间 B. 不同的函数中可以定义同名的局部变量 C. 函数定义中的形式参数名也是局部变量 D. 局部变量只在定义它的函数或复合语句(块)中有效 20. 关于函数模板的叙述中,正确的是( ) A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D。 用函数模板定义的函数没有类型 21。 在函数的传值调用中,要求( ) A. 形参和实参类型任意,个数相等 B. 形参和实参类型相同,个数相等 C. 形参和实参对应类型一致,个数相等 D. 形参和实参对应类型一致,个数任意 22. 适宜定义为内置函数的是( ) A. 函数体含有循环语句 B. 函数体含有递归语句 C. 需要加快程序的执行速度 D. 函数代码多且不常调用 23. 设函数模板定义为 template〈class T> T f(T x,T y){return x+y;} 对该函数模板使用不正确的是( ) A。 f(4,8); B. f(4.9,8。5); C. f(12.8f,45。9f); D。 f("123”,"456"); 24. 若在程序中有一个名字为a1的全局标识符,在该程序的某函数中有一个同名的局部标识符, 如果在该函数中访问这个同名的全局标识符,则该全局标识符应表示为( ) A。 a1 B. a1:: C。 ->a1 D. ::a1 25. 下列条件编译命令中下划线处是( ) #if( ) 语句1; #else 语句2; #endif A. 整常量表达式 B任意标识符。 C. 任意表达式 D. 被定义的宏名 26. 在函数的返回值类型与返回值表达式的类型描述中错误的是( ) C++常见选择填空习题集 A。 函数返回值的类型在函数定义时确 定,在函数调用时是不能改变的 B。 函数返回值的类型就是返回值表达式的类型 C。 函数返回值表达式类型与函数返回值类型不同时,表达式类型应转换成函数返回值类型 D. 函数返回值类型决定了返回值表达式的类型 27. 适合于实现功能不复杂但又要求有较快执行速度的函数是( ) A。 内联函数 B。 重载函数 C。 递归函数 D. 嵌套函数 28. 在函数说明中,不必要的是( ) A。 函数的类型 B. 函数参数的类型 C。 函数的名字 D。 函数参数的名字 29. 属于文件级作用域的标识符是( ) A. 函数形参 B。 语句标号 C。 外部静态类标识符 D. 自动类标识符 30. 预处理命令在程序中都是以( )开头的。 A. * B. # C。 : D. / 31. 在带参数的宏定义中,程序中引用宏定义的实参( ) A. 只能是常量 B. 只能是整型量 C。 只能是整型表达式 D. 可以是任意表达式 32. 在下列存储类标识符中,可见性和存在性不一致的是( ) A。 外部类 B。 自动类 C。 内部静态内 D。 寄存器类 33。 作用域运算符的功能是( ) A. 标识作用域的级别 B。 指出作用域的范围 C. 给定作用域的大小 D。 标识某个成员属于哪个类 34. 下列说法正确的是( ) A. C++语言的函数原型与C语言的函数说明格式相同 B. 不允许在C++语言的函数原型中说明参数类型 C. 当函数自变量个数不确定时,系统不自动检测自变量 D。 不论函数自变量个数是否确定,系统都不自动检测自变量 35. 当函数的自变量个数不确定时,参数表用( )表示。 A. … B。 * C. 空格 D。 ? 36。 在C ++语言中规定函数的返回值的类型是由( ) A。 return语句中的表达式类型所决定 B. 调用该函数时的主调用函数类型所决定 C。 调用该函数时系统临时决定 D。 在定义该函数时所指定的函数类型所决定 37. 局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用( ) 提供对全局变量的访问。 A. 域运算符 B. 类运算符 C。 重载 D. 引用 38. 在不同文件的函数中,对全局变量的引用要加上( )关键字。 A。 register B. auto C. static D。 extern 39. 下面程序段的输出结果为( ) C++常见选择填空习题集 #define PI 3。141593 #include void main(void) { cout<<”PI="〈 A。 3.141593=3。141593 B。 PI=3.141593 C. 3。141593=PI D。 程序有错误,无输出结果 40. 以下的函数调用语句中实参的个数是( ) fun(a+b, (x, y), fun(n+k, d, (a, b))); A。 3 B. 4 C. 5 D. 6 41。 下列标识符中,( )不是局部变量. A. register类 B。 外部static类 C。 auto类 D. 函数形参 42. C++语言中允许同一程序中有相同的函数名存在,称为( ) A。 类型转换 B。 结构体 C。 函数重载 D. 函数原型 43。 下列关于C++函数的说法中正确的是( ) A。 若函数先定义后调用,则必须在调用前说明 B。 如函数先调用后定义,则必须在调用前说明 C。 不论函数定义与调用的先后,都必须在调用前说明 D. 不论函数定义与调用的先后,都不必在调用前说明 44。 若函数没有返回值,则该函数的类型应被说明为( ) A. void B。 int C. char D. double 45. 若一个函数被说明为void类型,则其含义是( ) A. 函数没有任何返回值 B。 函数没有参数表 C. 函数的作用域为全局 D. 函数的作用域为局部 46。 下列关于用#define定义的常量的说法中正确的是( ) A. 在函数中定义的常量的作用域从定义起到该函数结束 B。 在函数中定义的常量的作用域从定义起到#undef取消为止或文件结束 C. 在一个函数中定义的常量不能在同一个文件的后续的其它函数中取消 D. 在一个函数中定义的常量不能在同一个文件的后续的其它函数中重新定义 47. 下列关于内联函数的说法中不正确的是( ) A。 内联函数体内不能有循环语句 B。 内联函数体内不能有switch语句 C. 内联函数必须先定义后调用 D. 内联函数在被调用时发生控制转移 48. 下列关于寄存器类变量的说法中不正确的是( ) A。 寄存器类变量只能是局部变量或函数的形式参数 B。 寄存器类变量只能为int型或char型 C. 寄存器类变量不能进行取地址操作 D。 定义为寄存器类的变量只能存储在寄存器中 49. 在C++中,下列关于函数原型的描述中错误的是( ) C++常见选择填空习题集 A。 如果函数先定义后调用,则该函数不能有函数原型说明 B. 函数原型与函数定义在返回类型、函数名及参数表上必须完全一致 C。 函数原型不必包含参数的名字,而只要包含参数的类型 D. 函数原型说明是语句 50. 下列关于变量和作用域运算符的说法中错误的是( ) A。 在用一作用域中不能说明同名变量,但不同作用域中可以说明同名变量 B. 作用域运算符提供了在局部作用域内引用同名的全局变量的方法 C。 不同的作用域内可以定义同名的变量 D。 全局变量不能自动初始化 51. 下面程序中第8行中的::a的含义是( ) #include 〈iostream.h> //1 int a; //2 void main() //3 { //4 int a; //5 { //6 int a; //7 ::a=5; //8 a=10; //9 } //10 } //11 A。 表示对第2行定义的变量a的引用 B. 表示对第5行定义的变量a的引用 C。 表示对第7行定义的变量a的引用 D。 不合法的引用 52。 下列关于预处理的描述中正确的是( ) A. 预处理命令在编译时被执行 B. 所有的预处理命令都是以#开头的 C。 预处理命令的主要作用是提高程序的运行效率 D。 预处理命令不是C++语言的必须组成部分 53. 若有宏定义语句为: #define SQ(x) (x*x) 则执行下列语句后m的值为( ) int m=50/SQ(5); A. 2 B。 10 C. 50 D。 1250 54. 下列关于内联函数的描述中错误的是( ) A。 内联函数是在程序编译时被执行的 B. 用inline修饰的函数原型其对应的函数也将成为内联函数 C。 内联函数不能是递归函数 D. 内联函数的主要作用是提高程序的运行效率 55. 下列关于函数的描述中错误的是( ) A. 函数形参的作用域是该函数的函数体 B. 所有的函数在定义它的程序中都是可见的 C. 调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去 C++常见选择填空习题集 D. 系统函数及其库不是C++语言所必须的 56。 下列关于存储类的说法中错误的是( ) A。 定义外部变量时不用存储类说明符extern,而说明外部变量时要用它 B. 内部静态类变量与自动类变量的作用域相同,但生存期不同 C. 内部静态类变量的可见性与存在性不一致 D. 静态生存期的标识符的寿命是短的,而动态生存期标识符的寿命是长的 57。 编译以下程序时,结果为( ) #include #define aa 123; //第2行 void main(void) //第3行 {cout〈 A。 编译时第2行出错 B. 编译时第4行出错 C. 编译时第2行和第4行均出错 D. 编译时无错误 58. 通常情况下,函数模板中的类型参数个数不能是( ) A. 0 B。 1 C。 2 D. 3 59. 所有在函数中定义的变量,包括形式参数,都属于( ) A。 全局变量 B. 局部变量 C。 静态变量 D。 外部变量 60。 文件包含命令中对被包含的文件名的要求是( ) A。 必须为。h B。 不能用.h C. 必须是。cpp D。 不一定是.h 二、填空题 1。 若定义函数时没有指定返回类型,则系统认为该函数的返回类型是 int 类型。 2. 变量的四种存储类型分别是 静态(static)类型、自动(auto)类型、寄存器(register)类型 和 外部(extern)类型 3. 变量的四种作用域分别是 程序级、文件级、函数级 和 块级 4. 局部静态(static) 变量的存在性与可见性不一致. 5. 函数按存储类型可分为 内部函数(或static函数) 和 外部函数(或extern函数). 6. auto 、 extern 和 register 三种修饰符不允许修饰类的成员数据. 7. 在说明函数时,(函数)参数的名字 不是必须的. 8. 在C++语言中,函数原型和函数定义要求 返回类型 、 函数名 和 参数表 必须完全一致。 9。 若有说明语句为:double fun(void);,则该语句也可以写成 double fun();。 10. 所有的预处理命令都是以 # 开头的; 11。 用#define宏定义的宏名可以用 宏 #undef取消。 12。 计算函数参数顺序引起的二义性是由不同的 编译系统 决定的. 三、写程序运行结果 1. #include 〈iostream〉 using namespace std; int f1(int a) { C++常见选择填空习题集 int b=0; static int c=2; b++; c++; return a+b+c; } int main() { int a=2; cout< cout<〈f1(a)〈 } 6 7 2. #include 〈iostream> using namespace std; void main() { int a=5,b=7,c=10; { int b=8; double c=8.8; a=b; { int c=b; } cout〈〈a〈<","< } cout<〈a<〈","< } 8,8,8.8 8,7,10 3。 #include 〈iostream> 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() { C++常见选择填空习题集 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〈〈max(a,b)<〈endl; 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< cout<〈f(b)< } 5 2 6。 #include using namespace std; int a=5; C++常见选择填空习题集 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〈<"a+b="< } cout<〈”a+b=”〈〈a+b〈〈endl; } 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<〈endl; } 5 8 11 14 8. #include ”iostream.h" void main() { int a=5,b=7,c=10; cout< { int b=8; C++常见选择填空习题集 float c=8。8; cout〈 a=b; { int c; c=b; cout〈〈a〈〈","〈〈b<<","< } cout<〈a〈<","< } cout〈 } 9. #include 〈iostream.h> int a; void main() { int a(20); { int a; a=10; ::a=5; C++常见选择填空习题集
版权声明:本文标题:C++常见选择填空习题集 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702710896h427687.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论