1、国家二级( C+)机试模拟试卷 16及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)上述三种说法都不对 2 下列叙述中正确的是 ( )。 ( A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 ( B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 ( C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 ( D)上述三种说法都不对 3 软件测试的目
2、的是 ( )。 ( A)评估软件可靠性 ( B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 4 下面描述中,不属于软件危机表现的是 ( )。 ( A)软件过程不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 5 软件生命周期是指 ( )。 ( A)软件产品从提出、实现、使用维护到停止使用的过程 ( B)软件从需求分 析、设计、实现到测试完成的过程 ( C)软件的开发过程 ( D)软件的运行维护过程 6 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间
3、的共同性质 ( D)类之间共享属性和操作的机制 7 层次型、网状型和关系型数据库的划分原则是 ( )。 ( A)记录长度 ( B)文件的大小 ( C)联系的复杂程度 ( D)数据之间的联系方式 8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体 计算机之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对多 ( D)多对一 9 数据库设计中反映用户对数据要求的模式是 ( )。 ( A)内模式 ( B)概念模式 ( C)外模式 ( D)设计模式 10 有三个关系 R、 S和 T如下:由关系 R和 S得到关系T的操作是 ( )。 ( A)自然连接 (
4、 B)交 ( C)投影 ( D)并 11 下列关于信息系统的叙述中,错误的是 ( )。 ( A)广播电视是一种双向的、点对多点的信息交互系统 ( B)网络聊天是一种双向的,以信息 交互为主要目的的系统 ( C)电话是一种双向的、点对点的、以信息交互为主要目的的系统 ( D)雷达是一种以感测和识别为主要目的的系统 12 作为信息处理热点技术之一的 “多媒体技术 ”中的媒体,强调的是 ( )。 ( A)存储媒体 ( B)表现媒体 ( C)传输媒体 ( D)感觉媒体 13 下列关于定点数与浮点数的叙述中错误的是 ( )。 ( A)在实数的浮点表示中,阶码是一个整数 ( B)整数是实数的特例,也可以用
5、浮点数表示 ( C)实数的补码是其对应的反码在最后一位加 1 ( D)相同长度的浮 点数和定点数,前者可表示数的范围要大于后者 14 下列选项中,均属于通用软件的是 ( )。 ( A) Windows XP、 AutoCAD、 PowerPoint ( B) Visual FoxPro、 Excel、 SPSS ( C) Word、 Photoshop、 Excel ( D) C+、 CorelDraw、 Firefox 2 0 15 在 Internet中,域名服务器的主要功能是实现 ( )的转换。 ( A) IP地址到域名 (主机名字 ) ( B)域名到 IP地址 ( C)主机 IP地址和
6、路由器 IP地址 之间 ( D)路由器 IP地址之间 16 下列关于函数参数的叙述中,正确的是 ( )。 ( A)在函数原型中不必声明形参类型 ( B)函数的实参和形参共享内存空间 ( C)函数形参的生存期与整个程序的运行期相同 ( D)函数的形参在函数被调用时获得初始值 17 下列关于对象初始化的叙述中,正确的是 ( )。 ( A)定义对象的时候不能对对象进行初始化 ( B)定义对象之后可以显式地调用构造函数进行初始化 ( C)定义对象时将自动调用构造函数进行初始化 ( D)在一个类中必须显式地定义构造函数实 现初始化 18 下列关于基类和派生类关系的叙述中,正确的是 ( )。 ( A)每个
7、类最多只能有一个直接基类 ( B)派生类中的成员可以访问基类中的任何成员 ( C)基类的构造函数必须在派生类的构造函数体中调用 ( D)派生类除了继承基类的成员,还可以定义新的成员 19 下列关于赋值运算符 =重载的叙述中,正确的是 ( )。 ( A)赋值运算符只能作为类的成员函数重载 ( B)默认的赋值运算符实现了 “深层复制 ”功能 ( C)重载的赋值运算符函数有两个本类对象作为形参 ( D)如果已经定义了复制 (拷贝 )构造函数,就不能重载赋值运算符 20 下列关于模板的叙述中,正确的是 ( )。 ( A)如果一个类中存在纯虚函数,这个类就是类模板 ( B)函数模板不能有形式参数表 (
8、C)类模板是一种参数化类型的类,是类的生成器 ( D)类模板中不能包含构造函数 21 下列关于 C+预定义流对象的叙述中,正确的是 ( )。 ( A) cin是 C+预定义的标准输入流对象 ( B) cin是 C+预定义的标准输人流类 ( C) cout是 C+预定义的标准输入流对象 ( D) cout是 C+预定义的标准输入 流类 22 下列选项中,正确的 C+标识符是 ( )。 ( A) 6_group ( B) group-6 ( C) age-3 ( D) _group_6 23 下列选项中,正确的 C+表达式是 ( )。 ( A) counter+3 ( B) element3+ (
9、 C) a+=b ( D) a=b 24 下列循环语句中有语法错误的是 ( )。 ( A) int i; for(i=1; i 10; i+)cout(d1, d2); ( B) sum(d1, d2); ( C) sum(d1, d2) ( D) sum(d1, d2); 31 有如下语句序列: char str(10); cinstr; 当从键盘输入 I love this game时, str中的字符串是 ( )。 ( A) I love this game ( B) I love this ( C) I love ( D) I 32 有如下程序: #include #include u
10、sing std: cout; class Point public: friend double distance(const Point&p); p距原点的距离 Point(int xx=0, int yy=0): x(xx), y(yy) private; int x, y; double distance(const Point&p) return sqrt(p x*p x+p y*p y); int main() Point p1(3, 4); cout using namespace std; chass CD public: CD()cout using namespace st
11、d; class Music public: void setTitle(char*str)strcpy(title, str); protected: char type10; private: char title20; ; class Jazz: public Music public: void set(char*str) strcpy(type, “Jazz“); strcpy(title, str); ; 下列叙述中正确的是 ( )。 ( A)程序编译正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 和 都出错 37 有如 下程序: #inc
12、lude using namespace std; class Instrument public: virtual void Display()=0。 ; class Piano: public Instrument public: void Display() *函数体程序略 * ; int main() Instrument s; Instrument *p=0; .; return 0; 下列叙述 中正确的是 ( )。 ( A)语句 Instrument *p=0;编译时出错 ( B)语句 Instrument s;编译时出错 ( C)类 Piano中的 Display函数不是虚函数
13、( D)类 Instrument是一个虚基类 38 有类定义如下: class Type( public: Type(int i=0); Type operator-(int); friend Type operator+(Type, Type); private; int val; ); 若有对象定义 Type c1;则下列语句序列中,错误的是 ( )。 ( A) Type(3)+c1; ( B) cl+Type(3); ( C) 3-c1; ( D) c1-3; 39 有如下程序: #include #include using namespace std; int main() cout
14、 using namespace std; Class Book public: Book(char*t=“)strcpy(title, t); _ private: char title40; ; class Novel: public Book public: Novel(char* t=“): Book(t) char* Category()constreturn“文学 “; ; int main() Book*pb; pb=new Novel(); cout void fun(int i) int main() fun(5); return 0; 四、综合应用题 43 使用 VC+6
15、0打开考生文件夹下的源程序文件 3 cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。 (1)基类 People完成打印功能,定义其中的打印函数为虚函数。请在注释 1后添加适当的语句。 (2)类 Boy继承于类 People,在构造函数中设置性别为 1。请在注释 2后添加适当的语句。 (3)类 Girl继承于类 People,在构造函数中没置性别为 0。请在注释 3后添加适当的语句。 (4)实现函数 fun,用于传递不同的类型,打印出性别。请在注释 4后添加适当的语句。 输出的内容如下: Sex=Boy Sex=Girl 注意:除在指定位置添加语句之外,请不要改动程序中的其他
16、内容。 试题程序: #include class Pcople public: *1* void print() int sex: ; class Boy: public People public: Boy() *2* void print() cout。 21 【正确答案】 A 【试题解析】 C+定义的标准流对象有四种: cin是 istream的输入流对象,cout、 ceer、 clog是 ostream的输出流对象。 22 【正确答案】 D 【试题解析】 C+标识符由字母、数字、下画线构成,可以以字母或下画线开头,但是不能以数字开头。 23 【正确答案】 C 【试题解析】 a+=b是
17、 a=a+b的简化写法。 24 【正确答案】 D 【试题解析】 for循环的表达式为 for(initiallizer; condition; expression),所以D答案错误。 25 【正确答案】 A 【试题解析】 定义一个 int型指针的方式应该是 int*px, *在类型与变量名之间。 26 【正确答案】 C 【试题解析】 函数声明中,形参只指定类型,而不能定义该形参,形参的定义是在函数被调用时才发生的,不能在定义函数时就给形参赋值。 27 【正确答案】 C 【试题解析】 MyClass a4表示定义了大小为 4的一个类数组 a,数组的每个成员都是一个 MyClass类,因此调用了
18、四次构造函数, MyClass*p5不调用构造函数。 28 【正确答案】 C 【试题解析】 operator是 C+的关键字,表示运算符重载,使用方法是 operator运算符 (参数列表 )。 29 【正确 答案】 D 【试题解析】 对于单目运算符,建议选择成员函数;对于运算符一、 ()、 、 -,只能作为成员函数;对于运算符 +=、 -=、 =、 *=、 &=、 !=、 =、 =、=,建议重载为成员函数;对于其他运算符,建议重载为友元函数。 30 【正确答案】 D 【试题解析】 T1类型无法确定。 31 【正确答案】 D 【试题解析】 在调用 cin时,遇到空格结束。 32 【正确答案】
19、A 【试题解析】 程序编译正确,运行结果为 5,该题考查了友元函数的用法。 33 【 正确答案】 B 【试题解析】 CD a, *b, d2中 a和 d2表示定义三个类 CD,程序结束时都会调用析构函数,而 *p表示声明一个指向 CD类的指针,并没有定义一个 CD类。 34 【正确答案】 C 【试题解析】 无参数表示括号中没有任何参数,无返回值表示返回为 void,常成员函数则在函数末有 const。 35 【正确答案】 B 【试题解析】 类不能继承自己,继承发生时会首先去找基类,但是基类还没有实现。因此编译器会认为类没有定义。 36 【正确答案】 C 【试题解析】 Jazz是以 public
20、方式继承 Music的,所以 Jazz类不能继承 private属性的 title成员变量。 37 【正确答案】 B 【试题解析】 Instrument含有纯虚函数,因此是一个抽象类,而抽象类不能被实例化,因此定义 Instrument对象 s时编译出错。 38 【正确答案】 D 【试题解析】 本题考查了 operator运算符重载的知识, D不符合重载的参数顺序。 39 【正确答案】 A 【试题解析】 从结果看出 98765后面填充了 5个 x,所以应该设置宽度setw(10)。 40 【正确答案】 D 【试题解析】 本题考查了动态编译和纯虚函数,从运行结果可以看出,调用的是子类的方法,所以
21、基类应该是纯虚函数。 二、基本操作题 41 【正确答案】 (1)应改为 “Ave+=datai; ”或 “Ave=Ave+datai; ”。 (2)应改为 “if(datai)Max)Max=datai; ”。 (3)应改为 “if(datai(Min)Min=dataEi; ”。 【试题解析】 本题第一个 for循环是求数组各个元素的和,逐次将每个元素值 加起来,而程序当中是逐个赋值的,因此在第 1标识处应将 “Ave datai”改成“Ave+=datai”或 “kve=Ave+datai”。 第 2处根据题意再求数组当中元素的最大和最小值,用变量 Max记录最大值,Min记录最小值,在
22、for循环中,逐次比较,如果该元素值比当前 Max大,则Max取该元素值,因此第 2标识处正确的语句应该是“if(dataiMax)Max=datai”。 如果数组中该元素值比 Min小,则 Min取该元素值。因此,两个 if语句中的条件判断错误,将第 3标 识处的语句 “if(dataiMin)Min=datai; ”改成“if(dataiMin)Min=datai; ”。 三、简单应用题 42 【正确答案】 for(int j=0; ji; j+) 行循环 for(int k=0; k=j; k+) 列循环 cout“#“; 输出 “#” coutend1; 【试题解析】 本题首先利用 f
23、or循环进行外层循环,输出对应的 i行,然后利用for循环进行内层循环,输出对 应 i行的 i列。 四、综合应用题 43 【正确答案】 (1)将 “void print(); ”补充完整为 “virtual void print(); ”。 (2)应添加 “sex=1; ”。 (3)应添加 “sex=0; ”。 (4)应添加 “void fun(People& p)”。 【试题解析】 第 1处要求 “基类 People完成打印功能,定义其中的打印函数为虚函数 ”。虚函数是函数的一种,要定义虚函数,在函数名前声明 virtual就可以了,所以将第 1处的 “void print()”语句 修改为
24、 “virtual void print()”。第 2处要求“类 Boy继承于 People,在构造函数中设置性别为 1”。基类 People中变量 sex用来存放性别, Boy继承 People,所以 Boy中性别的变量可以使用基类中的 sex变量,设置性别为 1,即 “sex=1; ”。第 3处要求 “类 Girl继承于 People,在构造函数中设置性别为 0”。在第 3处添加语句 “sex=0; ”。第 4处要求 “实现函数 fun,用于传递不同的类型,打印出性别 ”。根据 “p print(); ”语句知道, fun函数的形参为指针 p,由于它调 用了基类 People中的成员函数 print,所以 p的基类为People,即添加函数 fun的定义为 “void fun(People& p)”。