1、国家二级 C+机试(操作题)模拟试卷 315及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件 modi1 txt中。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include #include *error* using std; void WriteFile(char*s) ofstream out1; *error* out1 open(“modi1 txt“, binary
2、 app); for(int i=0; si!=0; i+) *error* out1 puts(si); out1 Close(); Void ClearFile() ofstream out1; out1 open(“modi1 txt“); out1 Close(); int main() char s1024; ClearFile(); cout Void fun(int N4) int main() int N4=1, 2, 3, 0); fun(N); return 0; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp,其中定义的类并不完整,按要求
3、完成下列操作,将类的定义补充完整。 (1)定义类 CPlanet的保护数据成员 distance和 revolvePeriod,它们分别表示行星距太阳的距离和行星的公转周期。其中, distance为 double型, revolvePeriod为 int型。请在注释 *1*之后添加适当的语句。 (2)定 义类 CEarth的构造函数 CEarth(double d, intr),并在其中计算地球绕太阳公转的轨道周长。假定: circumference=2*d*3 1416。请在注释*2*之后添加适当的语句。 (3)定义类 Earth的成员 display(),用于显示所有信息。包括地球距太阳
4、的距离,地球的公转周期,以及地球绕太阳公转的轨道周长。请在注释 *3*之后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要 修改其他的程序代码。 #include using namespace std; Class CPlanet protected: *1* public: CPlanet(double d, int r) distance=d; revolvePeriod=r; ; class CEarth: public CPlanet double Circumference, public: *2* CEarth(double d, int r) ci
5、rcumference=2*d*3 1416; *3* cout“distance= “distanceendl; cout“revolution Period=“revolvePeriOdendl; cout“revolution circumference=“circumference endl; ; void main() CEarth earth(9300000, 365); earth display(); 国家二级 C+机试(操作题)模拟试卷 315答案与解析 一、基本操作题 1 【正确答案】 (1)using namespace std; (2)out1 open(“modi1
6、txt“, ios: binary ios: app); (3)out1 put(si); 【试题解析】 (1)第 1个标识下的 “using std; ”是在程序中引入标准命名空间std,对于 C+中引入标准命名空间的格式,缺少 namespace,所以第 1个标识下的语句修改为 “using namespace std; ”0 (2)第 2个标识下,调用成员函数 open中,输入输出方式是在 ios类中定义的,所以 “out1 open(“modi1 txt“, binarylapp); ”语句缺少类 ios,即第 2个标识下的语句修改为 “out1 open(“modi1 txt“, i
7、os: binarylios: app); ”。 (3)第 3个标识应该用流成员函数 put输出字符,所以第 3个标识下的语句修改为 “out1 put(si); ”。 二、简单应用题 2 【正确答案】 int i, j, k; for(i=0; i4; i+) 百位循环 for(j=0; j4; j+) 十位循环 for(k=0; k4; k+) 个位循环 if(i!=j j!=k k!=i Ni!=0) 当三位数不同,并且百位不为 0 coutNiNjNk endl; 输出这三位数组成的数字 【试题解析】 (1)利用三层循环,对要三位数字是否相同进行判断。 (2)如果三位数不同,并且百位不
8、为 0。那么依次输出这三位数,即为三位数组成的数字。 三、综合应用题 3 【正确答案】 (1)添加语句: double distance; int revolvePeriod; (2)将 “CEarth(double d, int r)”补充完整为: CEarth(double d, int r): CPlanet(d, r) (3)添加语句: void display() 【试题解析】 (1)题目 1要求 “义类 CPlanet的保护数据成员 distance和revolvePeriod,它们分别表示行星距太阳的距离和行星的公转周期。其中,distance为 double型, revolve
9、Period为 int型 ”,因此第 1个标识下是添加数据成员 distance和 revolvePeriod的声明,因此第 1个标识下应添加 “double distance;int revolvePeriod; ”。 (2)假定: circumference=2*d*3 1416”,第 2个标识下构造函数 CEarth(double d, int r)完成类成员变量的初始化,在函数体内部完成了 circumference的初始化,而变量 distance和 revolvePeriod并没有初始化,需调用基类的构造函数来初始化这两个变量,因此第 2个标识下应改为 “CEarth(double d, intr):CPlanet(d, r)”。 (3)第 3个标识下完成成员函数 display()定义,函数 display()的返回值为 void,因此第 3个标识下应添加 “void display()”。