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

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

1、国家二级( C+)机试模拟试卷 49及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test35_1,此工程包含一个源程序文件test35_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: 400 40 源程序文件 test35_1.cpp清单如下: #include iostream.h class Student public: Student(int xx)x=xx; virtual float calcTuition(); /* found */ private: int x; ; float Student:calcTuit

2、ion() return float(xx); /* found */ class GraduateStudent:public Student public: /* found */ GraduateStudent(int xx) :Student(xx) virtual float calcTuition(); ; float GraduateStudent:calcTuition() return float(x*2); void main() Student s(20); GraduateStudent gs(20); cout s.calcTuition() end1; cout g

3、s.calcTuition() end1; 二、简单应用题( 40分) 2 请编 写一个函数 prim(int num),该函数实现判别参数 num是否为素数,在主函数中利用 prime()函数验证哥德巴猜想 任何比 2大的偶数都可表示为两个素数之和基本功能,根据 main函数的调用情况给出正确的返回值。 注意:部分源程序已存在文件 test36_2.cpp中。 请勿修改主函数 main和其他函数中的任何内容,仅在函数 prim的花括号中填写若干语句。 文件 test36_1.cpp的内容如下: #include iostream.h const LEN=100; int prim(int n

4、um) void main() int a=7; int cnt=0; cout “a is 7:n“; int *s; s=new intLEN; for(int i=2;i a;i+) if(!prim(i) scnt=i; cnt+; for (i=0;i cnt;i+) for (int j=i+1;j cnt;j+) if (s i +s j =a) cout si t sj t end1; 三、综合应用题( 30分) 3 使用 VC6打开考生文件夹下的工程 test34_3。此工程包含一个 test34_3.cpp,其中定义了表示栈的类 stack。源程序中 stack类的定义并不

5、完整,请按要求完成下列操作,将程序补充完整。 (1)定义类 stack的私有数据成员 sp和 size,它们分别为整型的指针和变量,其中sP指向存放栈的数据元素的数组, size为栈中存放最后一个元素的下标值。请在注释 “/*1*”之后添加适当的语句。 (2)完 成类 stack的构造函数,该函数首先从动态存储空间分配含有 100个元素的int型数组,并把该数组的首元素地址赋给指针 sp,然后将该数组的所有元素赋值为 0,并将 size赋值为 -1(size等于 -1表示栈为空 )。请在注释 “/*2*”之后添加适当的语句。 (3)完成类 stack的成员函数 push的定义。该函数将传入的整

6、型参数 x压入栈中,即在 size小于数组的最大下标情况下, size自加 1,再给 x赋值。请在注释“/*3*”之后添加适当的语句。 (4)完成类 stack的成员函数 pop的定义 ,该函数返回栈顶元素的值,即在 size不等于 -1的情况下,返回数组中下标为 size的元素的值,并将 size减 1。请在注释“/*4*”之后添加适当的语句。 程序输出结果如下: the top elem: 1 the pop elem: 1 the stack is empty 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件 test34_3.cpp清单如下: #include

7、iostream.h class stack /* 1 * public: stack ( ); bool empty()return size=-1; bool full() return size=99; void push(int x); void pop(); void top(); ; stack:stack() /* 2 * for(int i=0; i 100; i+) *(sp+i)=0; size=-1; void stack:push(int x) /* 3 * cout “the stack is full“ end1; else size+; *(sp+size) =

8、x; void stack:pop() /* 4 * cout “the stack is empty“ end1; else cout “the pop elem:“ *(sp+size) end1; size-; void stack:top() if iempty() ) cout “the stack is empty“ end1; else cout “the top elem:“ *(sp+size) end1; void main ( ) stack s; s.push(1); s.top(); s.pop(); s.top(); 国家二级( C+)机试模拟试卷 49答案与解析

9、一、程序改错题( 30分) 1 【正确答案】 (1)错误: private: 正确: protected: (2)错误: class GraduateStudent: public Student 正确: class GraduateStudent: public Student (3)错误: GraduateStudent(int XX): Student(xx) 正确: GraduateStudent(int xx): Student(xx) 【试题解析】 (1)本题考查 点为派生类对基类成员的访问。派生类中的成员不能访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。 (2)派生

10、类的一般格式 “class派生类名:继承方式 1基类名 1, 派生类新定义成员 ; ”,所以应将 “: ”改为规定的 “: ”, “: ”是作用域运算符,用来标识某个成员属于某个类。 (3)派生类构造函数在类体内定义的一般格式 “派生类名:基类名 1 (参数表 1 ), 派生类构造函数体 ”,所以应将 “: ”改为规定的 “: ”。 二、简单应用题( 40分) 2 【正确答案 】 int prim(int num) int half,flag; flag =0; half=num/2; for (int i=2;i =half;i+) if(num%i=O) flag=1; else cont

11、inue; if (flag=1) return 1; else return 0; 【试题解析 】 本题考查的是考生对一般应用的综合考查,主要是对于 for函数使用的应用。其基本算法如下:从 2开始到该数的一半进行穷举,每个数都对参数nam进行整除,如果发现有任何一个数能够整除 num,则标志变量 flag变为 1,最后返回的时候,返回值根据标志 flag分别返回 能整除 flag为 1,返回 “不能整除 flag为 0,返回 0。 三、综合应用题( 30分) 3 【正确答案】 (1) int *sp; int size; (2) sp new int100; (3) if(full() (4) if(empty() 【试题解析】 本题主要考查的是考生利用类、数组、指针和基本控制结构等知识,建立经典数据结构的能力。栈在数据结构中是一应用范围很广的类,在这里实现的只是最核心的部分。在该题中特别注意使用 new进行动态空间申请及指针在数组访问中的应用。

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

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

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