国家二级(C++)笔试模拟试卷20 (题后含答案及解析)
题型有:1. 选择题 2. 填空题
选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1. 对于算法的每一步,指令必须是可执行的。算法的( )要求算法在有限步骤之后能够达到预期的目的。
A.可行性 B.有穷性 C.正确性 D.确定性
正确答案:A
2. 下列叙述中错误的是( )。
A.一种数据的逻辑结构可以有多种存储结构 B.数据的存储结构与数据处理的效率无关 C.数据的存储结构与数据处理的效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
正确答案:B
3. 在结构化程序设计方法中,下面内聚性最弱的是( )。 A.逻辑内聚 B.时间内聚 C.偶然内聚 D.过程内聚
正确答案:C
4. 最简单的交换排序方法是( )。 A.快速排序 B.选择排序 C.堆排序 D.冒泡排序
正确答案:D
5. 在深度为7的满二叉树中,叶子结点的个数为( )。 A.32
B.31 C. D.63
正确答案:C
6. 在结构化方法中,软件功能分解属于下列软件开发中的阶段是( )。 A.详细设计 B.需求分析 C.总体设计 D.编程调试
正确答案:C
7. 结构化程序设计的主要特征是( )。 A.封装和数据隐藏 B.继承和重用
C.数据和处理数据的过程分离
D.把数据和处理数据的过程看成一个整体
正确答案:C
8. 在数据库管理系统的层次结构中,处于最上层的是( )。 A.应用层
B.语言翻译处理层 C.数据存取层 D.数据存储层
正确答案:A
9. 概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是( )。
A.把软件划分成模块
B.确定模块之间的调用关系 C.确定各个模块的功能 D.设计每个模块的伪代码
正确答案:D
10. 数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是( )。
A.实体完整性规则 B.参照完整性规则 C.对象完整性规则
D.用户自定义完整性规则
正确答案:C
11. cout、cerr和clog是( )的对象,cout处理标准输出,cerr和clog都处理标准出错信息。
A.istream B.ostream C.celt D.clog
正确答案:B
12. 在C++中,用于实现运行时多态性的是( )。 A.内联函数 B.重载函数 C.模板函数 D.虚函数
正确答案:D
13. 下列数组的定义中,会产生错误的是( )。 A.int a[]={‘0’,’1’,’2’,’3’,’4’,’5’,’6’}; B.int a[10]={0,1,2,3,4,5,6}; C.char a[5]=“hello”;
D.char a[5]={‘h’,’e’,’l’,’l’,’o’};
正确答案:C
14. 若有以下定义和语句: int s[4][5],(*ps)[5]; 数组元素的正确引用形式是( )。
A.ps+1 B.*(ps+3) C.ps[0][2] D.*(ps+1)+3
正确答案:C
15. 不合法的main函数命令行参数表示形式是( )。A.main (int a,char*c[1]) B.main (int arc, char**arv) C.main (int argc, char*argv) D.main (int argy, char*argc[])
ps=s; 则对s
正确答案:C
16. 在ios中提供控制格式的标志位中,( )是转换为十六进制形式的标志位。
A.hex B.oct C.dec D.left
正确答案:A
17. 设a=1;b=2;,则(a++)+b和a+++b这两个表达式的值分别为( )。 A.3,3 B.3,4 C.4,3 D.4,4
正确答案:A
18. 执行语句序列 int i=0;while(i<25)i+=3;cout<<i; 输出结果是( )。
A.24 B.25 C.27 D.28
正确答案:C
19. if语句的语法格式可描述为: 格式1:if(<条件>)<语句> 或 格式2:if(<条件>)<语句1>else<语句2> 关于上面的语法格式,下列表述中错误的是( )。
A.<条件>部分可以是一个if语句,例如if(if==0)...)... B.<语句>部分可以是一个if语句,例如if(...)if(...)...
C.如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变
D.<语句>部分可以是一个循环语句,例如if(...)while(...)...
正确答案:A
20. 若有以下程序: #include <iostream> using namespace std; void sub(int x,int y, int *z) { *Z = y+x; } int main( ) { int a,b,c; sub(8,4,&a); sub(6,a,&b); sub(a,b,&c); cout<<a<<”,”<<b<<”,”<<c<<endl; return 0; 程序运行后的
输出结果是( )。
A.12,18,30 B.-12,6,8 C.6,8,10 D.12,-18,16
正确答案:A
21. 函数fun的返回值是( )。 fun(char * a, char *b) { int num=0,n=0; while(*(a+num)!=‘\\0’) num++; while(b[n]) {*(a+num)=b[n];num++;n++; } return num; }
A.字符串a的长度 B.字符串b的长度
C.字符串a和b的长度之差 D.字符串a和b的长度之和
正确答案:D
22. 下列程序的输出结果为( )。 #include<iostream.h> main( ) { int a=4,b=3,c=1,d; d=a&&b&&b>c-!0; cout<<d; }
A.0 B.3 C.1 D.4
正确答案:C
23. 若定义:float x;int a,b;,则正确的switch语句是( )。
A.switch(x) { case1.0:cout<<”*\\n”; case2.0:cout<<”**\\n”;
B.switch(x) {case 1.2:cout<<”*\\n”; case 3:cout<<”**\\n”; } C.switch(a+b) { case 1.0:cout<<”*\\n”; case 1+2:cout<<”**\\n “;
D.switch(a+b) { case 1:cout<<”*\\n”; case 2:cout<<”**\\n”;
正确答案:D
24. 有如下类声明: class MyBASE { int k; public: void set(int n) {k=n;} int get( )const{return k;} }; class MyDERIVED:protected MyBASE { protected. int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get( )const{return MyBASE::get( )+j;} }; 则类MyDERIVED中保护的数据成员和成员函
数的个数是( )。
A.4 B.3 C.2 D.1
正确答案:B
25. 关于关键字class和typename,下列表述中正确的是( )。 A.程序中的typename都可以替换为class B.程序中的class都可以替换为typename
C.在模板形参表中只能用typename来声明参数的类型
D.在模板形参表中只能用class或typename来声明参数的类型
正确答案:A
26. 以下程序的正确运行结果是( )。 #include<iostream.h> int f(int);. void main( ) { int a=2,i; for(i=0;i<3;i++) cout<<
f(a)<<” “; cout<<endl; } int f(int a) { int b=0; static int c=3; b++;c++; return(a+b+c); }
A.777 B.7 10 13 C.79 11 D.7 8 9
正确答案:D
27. 语句ofstream f(“SALARY.DAT”,ios::appl ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且( )。
A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
B.若文件存在,将其置为空文件;若文件不存在,打开失败
C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
D.若文件存在,打开失败;若文件不存在,建立一个新文件
正确答案:A
28. C++语言中规定函数的返回值的类型是由( )。 A.return语句中的表达式类型所决定
B.调用该函数时的主调用函数类型所决定 C.调用该函数时系统临时决定
D.在定义该函数时所指定的数据类型所决定
正确答案:D
29. 运算符函数调用格式的表达式y/x++与表达式y.operator/(operator++(x,0))的含义相同,由此可看出( )。
A.“/”和“++”都是作为成员函数重载的 B.“/”和“++”都是作为非成员函数重载的 C.“/”是作为成员函数重载的,“++”是作为非成员函数重载的 D.“/”是作为非成员函数重载的,“++”都是作为成员函数重载的
正确答案:C
30. 有如下程序: #include <iostream> using namespace std; class A { public: A( ){cout<<”A”;} }; class B {public:B( ){cout<<”B”;} }; class C:public A { B b; public:C( ){cout<<”C”;} }; int main( ){C obj;return 0;} 执行后的输出结果是( )。
A.CBA B.BAC C.ACB D.ABC
正确答案:D
31. 有如下类定义: class MyBase{ int k; public: MyBase(int n--0):k(n){} int value( )const{return k;} }; class
MyDefived: MyBase{ int j; public: MyDefived(int i):j(i) {} int getK( )const{return k;} int getJ( )const{return j;} }; 编译时发现有一处语法错误,对这个错误最准确的描述是( )。
A.函数getK试图访问基类的私有成员变量k B.在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或pfivate
C.类MyDerived缺少一个无参的构造函数
D.类MyDerived的构造函数没有对基类数据成员k进行初始化
正确答案:A
32. 下列关于继承的描述中,错误的是( )。 A.析构函数不能被继承 B.派生类是基类的组合
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员 D.派生类中继承的基类成员的访问权限到派生类保持不变
正确答案:D
33. 多态性指的是( )。 A.以任何方式调用一个虚函数 B.以任何方式调用一个纯虚函数
C.借助于指向对象的基类指针或引用调用一个虚函数 D.借助于指向对象的基类指针或引用调用一个纯虚函数
正确答案:C
34. 定义如下枚举类型:enum Number{one=1,two=2,four=4,eight=8),则下列语句正确的是( )。
A.Number num=1;
B.Numbernum=Number(20);
C.Number num=Number(eight│OxFF); D.枚举类型Number的取值范围是0~15
正确答案:D
35. 带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化( )。
A.与虚基类下面的派生类个数有关 B.多次 C.二次 D.一次
正确答案:D
填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。注意:以命令关键字填空的必须拼写完整。
36. 在面向对象方法中,类的实例称为【 】。
正确答案:对象
37. 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是【 】。
正确答案:黑箱
38. 为了使模块尽可能,要求模块的内聚程度要尽量高,且各模块间的耦合程度要尽量【 】。
正确答案:弱
39. 由关系数据库系统支持的完整性约束是指【 】和参照完整性。
正确答案:实体完整性
40. 设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则T中的叶子结点数为【 】。
正确答案:8
41. 多态性具体体现运行和编译两个方面,在程序运行时的多态性通过继承和【 】来体现,而程序编译时多态性体现函数和运符的重载上。
正确答案:虚函数
42. 将一个函数声明为一个类的友元函数必须使用关键字【 】。
正确答案:friend
43. 非成员函数只有在声明为类的【 】才能访问这个类的所有private成员。
正确答案:友元函数
44. 有以下程序段: #include<iostream.h> #define MIN(x,y) (x)<(y)?(x):(y) void main( ) { int i,j,k; i=10;j=15; k=10 *MIN(i,j); cout<<k<<endl; } 程序执行后的输出结果是【 】。
正确答案:15
45. 以下程序的执行结果是【 】。 #include<iostream.h> void main( ) { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; cout <<”d=“<<d<<endl; }
正确答案:d=20
46. 下面程序的输出结果为【 】。 #include<iostream.h> main( ) { char a[]=“morning”,t; int i,j=0; for(i=1;i<7;i++) if(a[j]<a[i]) j=i; t=a[j]; a[j]=a[7]; a[7]=a[j]; cout<<a;}
正确答案:mo