国家二级(C++)笔试模拟试卷21(题后含答案及解析)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家二级(C++)笔试模拟试卷21(题后含答案及解析) 题型有:1. 选择题 2. 填空题
选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1.下列选项中不符合良好程序设计风格的是( )。
A.源程序要文档化
B.数据说明的次序要规范化
C.避免滥用goto语句
D.模块设计要保证高耦合、高内聚
正确答案:D
2.希尔排序属于( )。
A.交换排序
B.归并排序
C.选择排序
D.插入排序
正确答案:D
3.程序设计语言的工程特性之一为( )。
A.软件的可重用性
B.数据结构的描述性
C.抽象类型的描述性
D.数据库的易操作性
正确答案:A
4.对下列二叉树进行中序遍历的结果是( )。
A.ACBDFEG
B.ACBDFGE
C.ABDCGEF
D.FCADBEG
正确答案:A
5.下列叙述中,不属于数据库系统的是( )。
A.数据库
B.数据库管理系统
C.数据库管理员
D.数据库应用系统
正确答案:D
6.数据的逻辑结构是指( )。
A.存储在外存中的数据
B.数据所占的存储空间量
C.数据元素之间的逻辑关系
D.数据的逻辑结构在计算机中的表示
正确答案:C
7.在数据库系统中,用户所见的数据模式为( )。
A.概念模式
B.外模式
C.内模式
D.物理模式
正确答案:B
8.在关系数据库中,用来组织索引结构联系的是( )。
A.树形结构
B.网状结构
C.线性表
D.二维表
正确答案:D
9.检查模块是否正确的组合在一起的过程称为( )。
A.确认测试
B.集成测试
C.验证测试
D.验收测试
正确答案:B
10.下列数据结构中不属于线性存储结构的是( )。
A.顺序表
B.栈
C.队列
D.链表
正确答案:D
11.for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是( )。
A.0
B.5
C.6
D.无数次
正确答案:C
12.若要把函数void f( )定义为aClass的友元函数,则应该在类aClass 的定义中加入的语句是( )。
A.void f( );
B.static voidf( );
C.friend f( );
D.friend void f( );
正确答案:D
13.对下列语句正确的描述是( )。
const int*x;//(1) int*const X;//(2)
A.语句(1)的含义是指针变量x不能更改
B.语句(2)的含义是指针变量x所指向的不能更改
C.语句(2)的含义是指针变量x不能更改
D.语句(1)和(2)是相同含义的不同定义方式
正确答案:C
14.若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数fun的正确方法是( )。
A.(*p)fun(x,y);
B.*pfun(x,y);
C.(*p)(x,y)
D.*p(x,y)
正确答案:C
15.下述静态数据成员的特性中,( )是错误的。
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D.静态数据成员不是所有对象所共用的
正确答案:B
16.在C++程序中,使用基本输入输出流需要包含的头文件是( )。
A.stdio.h
B.stdafx.h
C.iostream.h
D.stream.h
正确答案:C
17.下列程序的输出结果是( )。
#include<iostream>using namespace std; int main( ) { char a[]=““Hello,World”;char*ptr = a; while(*ptr) { if(*ptr>= ‘a’&&*ptr<=‘z’) cout<<char(*ptr+’A’-’a’); else cout<<*ptr; ptr++; } retur 0; } A.HELLO, WORLD
B.Hello, World
C.HELLO, world
D.hello, world
正确答案:A
18.定义如下枚举类型:enum{Monday,Tuesday,Wednesday,Thmsday,Friday=2);则下列语句正确的是( )。
A.表达式Wednesday==Friday的值是true
B.Day day; day=3;
C.Day day; day=Monday+3;
D.Day day; day=Tuesday+10;
正确答案:A
19.下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
正确答案:A
20.下列各个选项中对字符数组赋字符串的语句中,错误的是( )。
A.char s[10];s=“program”;
B.char s[]=“program”;
C.char s[10]=“program”;
D.char s[10]; strcpy(s,”program”);
正确答案:A
21.以下程序的输出结果是( )。
#include<iostream.h>main( ) { int b[3][3]={0,1,2,0,1,2,0,1,2},ij,t=1;for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j];cout<<t;}
A.3
B.4
C.1
D.9
正确答案:B
22.命题“10<m<15或m>20”的C++语言表达式是( )。
A.((m>10)&&(m<15))‖(m>20)
B.((m>20)&&(m<15))‖(m>10)
C.(m>10)‖(m<15)&&(m>20))
D.((m>10)‖m<15))‖(m>20)
正确答案:A
23.在表达式x-y中,“-”是作为非成员函数重载的运算符。
若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为( )。
A.x.operator-(y)
B.operator-(y,x)
C.y. operator-(x)
D.operator-(x,y)
正确答案:D
24.如果表达式--x/y中的“--”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为( )。
A.operator/(x.operator--( ),y);
B.operator/( operator--(x),y);
C.x.oper, ator -- ( ).operator/(y);
D.y. operator/( operator--(x));
正确答案:B
25.包容类Contain和内嵌类Embed定义如下:#include <iostream.h >class Contain { private: int x; protected: int z; public: class Embed { private: int y; public: Embed( ){y=100;} int Embed_Fun( ); }MyEmbed; int Contain_Fun( ); }; 对上面的定义,正确的描述是( )。
A.定义类Embed对象的语句是:Contain::Embed embed;
B.类Contain的成员函数Contain_Fun( )中可以用MyEmbed.y的方式访问类Embed的私有成员y
C.类Embed的成员函数Embed_Fun( )中可以直接访问类Contain和的私有成员x
D.类Embed的成员函数Embed_Fun( )中可以直接访问类Contain的保护成员z
正确答案:A
26.在说明一个结构体变量时,系统分配给它的存储空间是( )。
A.该结构体中第一个成员所需的存储空间
B.该结构体中最后一个成员所需的存储空间
C.该结构体中占用最大存储空间的成员所需的存储空间
D.该结构体中所有成员所需存储空间的总和
正确答案:D
27.类模板的模板参数( )。
A.只可作为数据成员的类型
B.只可作为成员的返回类型
C.只可作为成员函数的参数类型
D.以上三者皆可
正确答案:D
28.下列关于多继承二义性的描述中,错误的是( )。
A.一个派生类的两个基类中都有某个同名成员,派生类中这个成员的访问可能出现二义性
B.解决二义性的最常用的方法是对成员名的限定法
C.基类和派生类中同时出现的同名函数,也存在二义性问题
D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性
正确答案:C
29.有如下程序:#include <iostream.h>using namespace std; class Demo { public: Demo( ){ cout<<”defautt constmctor\n”; } Demo(const Demo &x){cont<<”copy constmctor\n”;} }; Demo userCode (Demo b){Demo c(b);return c;} int main( ) { Demo a,d; cout<<”calling userCode( )\n”; d=userCode(a); return 0; } 执行上面程序的过程中,构造函数Demo( )和Demo(const Demo&x)被调用的次数分别是( )。
A.1和1
B.1和2
C.2和3
D.2和4
正确答案:C
30.若有以下程序:#include <iostream>using namespace std; class A { private: int a; public: A(im i) { a=i; } void disp( )cout<<a<<”,”; } }; class B { private: int b; public: B(int j) { b=j; } void disp0 { cout<<b<<”,”; } }; class C: public B,public A { private: int c; public: C(int k):A(k-2),B(k+2) { c=k; } void disp0 { A::disp( ); B::disp( ); cout<<c<<endl; } }; int main( ) { C obj(10); obj.disp( ); return 0; } 程序执行后的输出结果是( )。
A.10,10,10
B.10,12,14
C.8,10,12
D.8,12,10
正确答案:D
31.下面关于构造函数和析构函数的描述,错误的是( )。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数D.构造函数可以声明为虚函数
正确答案:D
32.以下程序的执行结果为( )。
#include <iostream.h>class Sample { int n; public: Sample(int i) {n=i;} operator++( ) {n++;} //前缀重载运算符operator++(int) {n+=2;} //后缀重载运算符void disp( ) { cout<<”n=“<<n<<endl; } }; void main( ) { Sample A(2),B(2); A++; ++B; A.disp( ); A.disp( ); }
A.n=4
B.n=1
C.n=3
D.n=5 n=3 n=2 n=4 n=6
正确答案:A
33.一个( )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
A.函数模板
B.模板甲数
C.类模板
D.模板类
正确答案:C
34.下面叙述错误的是( )。
A.对基类成员的访问能力在private派生类中和public派生类中是相同的B.基类的private成员在public派生类中不可访问
C.基类中的public成员在protected派生类中是protected的
D.基类中的public成员在protected派生类中仍然是public的
正确答案:D
35.关于关键字class和typename,下列表述正确的是( )。
A.程序中所有的typename都可以替换为class
B.程序中所有的class都可以替换为typename
C.A和B都正确
D.A和B都不正确
正确答案:A
填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。
注意:以命令关键字填空的必须拼写完整。
36.编译过程一般分成5个阶段【】、语法分析、错误检查、代码优化和目标代码生成。
正确答案:代码生成
37.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。
正确答案:存储结构或物理结构或物理存储结构
38.一个关系表的行称为【】。
正确答案:记录或元组
39.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。
正确答案:边值分析法
40.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【】两个含义。
正确答案:逻辑独立性
41.求1~100的和,可写成for(s=0,i=1;【】;i++)s+=i;的形式。
正确答案:i<=100或i<101
42.表达式x.operator+(y.operator++(0))还可以写成【】。
正确答案:x+y++或x+(y++)
43.耦合和内聚是评价模块独立性的两个主要标准,其中【】反映了模块内各成分之间的联系。
正确答案:内聚
44.类中数据成员和成员函数的默认访问级别为【】。
正确答案:私有或private
45.已知:double A(double A){return++a;}和int A(int a){return ++a;)是一个函数模板的两个实例,则该函数模板定义为【】。
正确答案:template<typename T>TA(T a){retum a++;)
46.下列程序的输出结果是【】。
#include<iostream>using namespace std;class Test{ public:Test( ){cnt++;) ~Test( ){cnt--;) static int Count( ){retum cnt;} private:static int cnt;};int Test::cnt=0;int main( ) { cout<<Test::Count( )<<’’;Test t1,t2;Test*pT3=new Test;Test*p T4=new Test;cout<<Test::Count( )<<’’;delete pT4;delete pT3;cout<<Test::Count( )<<endl;return0;}
正确答案:42
47.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。
下列程序涉及对象数组的创建和单个对象的创建,其输出结果是【】。
#include<iostream>using namespace std;class Foo{ public:Foo(int x){cout<<’A’;) Foo( ){} };int main( ) { Foo f[3],g(3);return0;}
正确答案:A
48.下列程序的输出结果是【】。
#include<iostream.h>void main( ) { int i(1),j(2),k(3),a(10);if(!i) a--;else if(j) if(k)a=5;else a=6;a++;cout<<a<<endl;if(i<j) if(i!=3) if(!k) a=1;else if(k) a=5;6+=2;cout<<a<<endl;
正确答案:6 7
49.下列程序的输出结果是【】。
#include<iostream.h>void main( ) { inta(5),b(6),i(0)1j(0);switch(a) { case 5:switch(b) { case 5:i++;break;case 6:j++;break;defaun:i++;j++;} case 6:i++;j++;break;default:i++;j++;} cout<<i<<”,”<<j<<endl;}
正确答案:1,2
50.以下程序的执行结果是【】。
#include<iostream>#define PI____3.14159 const int R=10;void main( ) { double a,b;ac2*R*PI;b=R*R*PI;cout<<”a=“<<a<<”,”<<”b=“<<b<<endl;”}
正确答案:a=62.8318,b=314.159。