[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc

上传人:medalangle361 文档编号:502401 上传时间:2018-11-29 格式:DOC 页数:31 大小:85KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc_第1页
第1页 / 共31页
[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc_第2页
第2页 / 共31页
[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc_第3页
第3页 / 共31页
[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc_第4页
第4页 / 共31页
[计算机类试卷]国家二级(C++)机试模拟试卷130及答案与解析.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 130及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性 2 下列叙述中正确的是 ( )。 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都 是非线性结构 ( D)以上三种说法都不对 3 软件测试的目的是 ( )。 ( A)评估软件可靠性 (

2、B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)软件集成测试计划 ( B)软件详细设计说明书 ( C)用户手册 ( D)软件需求规格说明书 5 软件生命周期是指 ( )。 ( A)软件产品从提出、实现、使用维护到停止使用退役的过程 ( B)软件从需求分析、设计、实现到测试完成的过程 ( C)软件的开发过程 ( D)软件的运行维护过程 6 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性和

3、操作的机制 7 层次型、网状型和关系型数据库划分原则是 ( )。 ( A)记录长度 ( B)文件的大小 ( C)联系的复杂程度 ( D)数据之间的联系方式 8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对多 ( D)多对一 9 数据库设计中反映用户对数据要求的模式是 ( )。 ( A)内模式 ( B)概念模式 ( C)外模式 ( D)设计模式 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)差 ( C)交 ( D)并

4、11 下列符号中能够作为 C+标识符的是 ( )。 ( A) const ( B) 2a ( C) _shape ( D) -count 12 已知枚举类型声明语句为: enum COLORWHITE, YELLOW, GREEN=5, RED, BLACK=10; 则下列说法中错误的是 ( )。 ( A)枚举常量 YELLOW的值为 1 ( B)枚举常量 RED的值为 6 ( C)枚举常量 BLACK的值为 10 ( D)枚举常量 WHITE的值为 1 13 执行下列语句段后,输出字符 “*”的个数是 ( )。 for(int i=50; il; i-=2) coutgetPl();和 co

5、utgetPI();和 coutgetPI(); ( D) cout using namespace std; class VAC public: int f()coastreturn 3; int f()return 5; ; int main() VAC v1; coast VAC v2; cout using namespace std; class MyClass public: MyClass(int i=0)cout using namespace std; class AA int k; protected: int n; void setK(int k)tllis-k=k; p

6、ublic: void setN(im n)this-n=n; ; class BB: public AA *类体略 * ; int main() BB x; x n=1: 1 x setN(2); 2 x k=3: 3 x setK(4); 4 return 0; 在标注号码的四条语句中正确的是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 35 有如下程序: #include using namespllce std; class Base int x; public: Base(int n=0): x(n)eout using namespaee std; class

7、 GA public: virtual int f()return 1; ; class GB: public GA public: virtual int f( )return 2; ; void show(GA g)toutdouble 由此可知 ( )。 ( A)这可能是一个函数模板的声明 ( B)这可能是一个类模板的声明 ( C)这既可能是一个函数模板的声明,也可能是一个类模板的声明 ( D)这肯定是一个错误的模板声明 39 C+系统预定义了 4个用于标准数据流的对象,下列选项中不属于此类对象的是 ( )。 ( A) cout ( B) cin ( C) cerr ( D) cset

8、40 下列语句都是程序运行时的第 1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是 ( )。 ( A) cout #include using namespace std; class Point private: double x, y; public: Point(double XX, double yy) x=xx: y=yy; ERROR *found* double MyDistance(Point&a, Point&b); ; double MyDistance(Point&a, Point&b) ERROR *found* double dx=x-b x: ERR

9、OR vfound* double dy=a y-y: return sqrt(dx * dx+dy * dy); int main() Point p1(3 6, 6 4), p2(8, 0 3); double d=MyDistance(p1, p2); cout #include using namespace std; #define MaxElement 100 class Element “元素 ”类 public: int n; Element(int i=0): n(i) ; class MySet “集合 ”类 Element水 element;指向存储元素的数组的指针 in

10、t size:数组大小 int counter;数组中元素的个数 int current; 属于表示扫描位置,及当前被扫描元素在数组中的下标 public: MySet(): element(new Element100), size(100), counter(0), current(0) MySet()deleteelement; void add(Element ele);向集合中添加一个元素,保持由小到大的顺序。 void remove(Element ele);删除集合中指定的元素 void scanFirst()current=0; 将扫描位置定位于首元素 *found* void

11、 scanNext()_; 将扫描位置定位于下一个元素 Element get()constreturn elementcurrent; 返回当前被扫描的元素 bool isEnded()constreturn current=counter; 如果已经没有更多的元素可扫描了,返回 true。 void show();显示集合中所有元素 : void MySet: add(Element ele) int DOs=counter; pos用于确定元素应插入的位置 while(pos0) 从后往前寻找该位置 if(ele nelementpos-1 n)break;找到应插入的位置,退出循环 *

12、found* if(_)return; 发现相同元素,终止添加过程。 pos_: if(counter=size) 如果没有足够空 间,扩充空间 (增加 100个元素的容量 ) Element*tmp=element; tmp指向原来的数组 * found* element=_; 请一个新的数组,容量扩大 100个元素的容量 for(int i=0; iDos; i-)elementi=elementi-1; 后移相关元素,腾出存放新元素的空间 elementDos=ele;插入新元素 counter+; void MySet: show() scanFirst();扫描位置定位于首元素 wh

13、ile(!isEnded() coat=0) 从后往前寻找该位置 if(ele nelementDOs n)return;集合中没有该元素,终止删除过程。 if(ele n=elementDOs n)break;找到删除的元素,退出循环。 pos_; if(pos #include using namespace std; class MiniString public: friend ostream&operator (ostream&output, const MiniString&s)重载流插入运算符 output(istream&input, MiniString&s)重载流提取运算符

14、 char temp100;用于输入 的临时数组 temp0: = 0;初始为空字符串 inputsetw(100)temp; int inLen=strlen(temp);输入字符串长度 if(inLen!=0) s length=inLen;赋长度 if(s sPtr!=0)deletes sPtr;避免内存泄漏 s sPtr=new chars length+1; strcpy(s sPtr, temp);如果 s不是空指针, 则复制内容 else s sPtr0= 0;如果 s是空指针,则为空字符串 return input; void modString(const char*str

15、ing2)更改字符串内容 if(string2 !=0)如果 string2不是空指针,则复制内容 if(strlen(string2)!=length) length=strlen(string2); deletesPtr; sPtr=new charlength+1; 分配内存 strcpy(sPtr, string2); else sPtr0= 0;如果 string2是空指针,则为空字符串 MiniString&operator=(const MiniString &otherString); MiniString(const char*s= ): length(s!=0)?strle

16、n(s): 0)构造函数 sPtr=0; if(length!=0) setString(s); MiniString()析构函数 deletesPtr; private: int length;字符串长度 char * sPtr;指向字符串起始位置 void setString(const char* string2)辅助函数 sPtr=new charstrlen(string2)+1;分配内存 if(string2 !=0)strcpy(sPtr, string2);如果 string2不是空指针,则复制内容 else sPtr0= 0;如果 string2是空指针,则为空字符串 ; p

17、roj3 cpp #include #include using namespace std; #includeproj3 h MiniString& MiniString: operator=(const MiniString &otherString) 重载赋值运算符函数。提示:可以调用辅助函数 setString *333* *666* int main() MiniString strl(Hello!“), str2; void writeToFile(const char*); str2=strl;使用重载的赋值运算符 str2 modString(Happy neW year!);

18、 coutdouble这里就可以看出这是一个函数模板的声明。 39 【正确答案】 D 【试题解析】 C+标准数据流的对象分别是 cout、 cin、 cerr、 clog,所以本题答案为 D。 40 【正确答案】 D 【试题解析】 本题考查控制输出格式, A、 B、 C选项都会输出 “12345”,只有 D选项输出 “12345”,所以本题答案为 D。 二、基本操作 题 41 【正确答案】 (1)friend double: MyDistance(Point&a, Point&b); (2)double dx=a x-b x; (3)double dy=a y-b y; 【试题解析】 (1)主

19、要考查考生对友元函数的掌握,由于 MyDis-tance函数在类定义体外定义时,未加类名 Point修饰作用域,可知 MyDistance并不是类 Point的成员函数,但是声明是在 Point定义体内部,所以应该是友元函数,另外函数MyDistance可以直接操作 Point对象的成员变量,所以进一步确定是友元函数,使用 friend关键字修饰。 (2)主要考查考生对友元函数的掌握和成员变量的访问,在函数 MyDistance中,为了计算 a、 b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问 a、 b的横纵坐标,将 a的横坐标减去 b的横坐标,得到差值 dx,再计算 dy。 (3)

20、主要考查考生对友元函数的掌握和成员变量的访问,在函数 MyDistance中,为了计算 a、 b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问 a、 b的横纵坐标,将 a的纵坐标减去 b的纵坐标 ,得到差值 dy,再与 dx一起计算距离。 三、简单应用题 42 【正确答案】 (1)+current (2)ele n=elementpos-1 n (3)new Elementsize+100 (4)scanNext() 【试题解析】 (1)主要考查考生对数组和自增运算符的掌握情况,扫描数组元素,将扫描位置定位到下一个元素,需要将下标加 1,使用自增运算符 (2)主要考查考生对数组元素的访

21、问和比较运算符的掌握, pos初值为数组元素个数,所以访问 element元素使用 pos-1,避免访问数组越界;另外需要判断插入元素与当前元素是否相等来决定程序是否返回,使用相等运算符。 (3)主要考查考生对动态内存分配的掌握,题意需要申请一个新的数组,并将当前数组容量 size扩大 100个,所以答案为 new Elementsize+100。 (4)主要考查考生对类成员函数的掌握, show函数用来输出数组的所有元素,所以从首元素开始一次输出,输出一个元素需要将扫描定位到下一个元素,对应于前面的 scanFirst(),使用成员函数 scanNext()最合适不 过了。 四、综合应用题 43 【正确答案】 length=otherString length: 把对象字符串 otherString的长度赋值给变量 length setString(otherString sPtr); 调用函数 setstring,实现给类变量 sptr分配空间,以及逐个把对象otherstring字符串的值复制到 sptr中 return*this: 返回被赋值的对象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1