1、二级 C+分类模拟 94 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件 modi1.txt 中。 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream #includefstream /*error* using std; void WriteFile(char* s) ofstream o
2、ut1; /*error* out1.open(“modi1.txt“, binary|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 “please input a string:“ (分数:30.00)_二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的
3、源程序文件 modi2.cpp。请完成函数 fun(int x),该函数功能是判定 x 的所有的约数,并且在函数中调用写函数 WriteFile()将结果输出到 modi2.txt 文件中。 例如:x=10 的约数为 1,2,5,10。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #includeiostream #includefstream #includecmath using namespace std; void WriteFile(int c) ofstream out1; out1. open (“modi2. txt“, ios_ base:bin
4、ary|ios base:app); out1 c (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp,其中定义了用于表示坐标的类 TestClass1,但类TestClass1 的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)声明 TestClass2 类为 TestClass1 类的友元类,请在注释/*1*后添加适当的语句。 (2)完成类的构造函数,分别对成员变量赋值,请在注释/*2*后添加适当的语句。 (3)完成类的构造函数,分别对成员变量赋值,请在注释/*3*后添加适当的语句。 (4)完成计算平
5、面上两点之间的距离函数 Distance,计算的方法如下:X 坐标之差的平方与 Y 坐标之差的平方之和的开方。请在注释/*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main 与其他函数中的任何内容。 #includeiostream #includecmath using namespace std; class TestClass1 /*1* public: /*2* X=a; Y=b; /*3* X=a; Y=0; void print() private: float X,Y; ; class TestClass2 public: float Distanc
6、e(TestClass1 ; float TestClass2:Distance (TestClass1 /*4* (分数:40.00)_二级 C+分类模拟 94 答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件 modi1.txt 中。 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream #i
7、ncludefstream /*error* using std; void WriteFile(char* s) ofstream out1; /*error* out1.open(“modi1.txt“, binary|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 “plea
8、se input a string:“ (分数:30.00)_正确答案:()解析:using namespace std; (2)out1.open(“modi1.txt“,ios:binary|ios:app); (3)out1.put(si); 答案考生文件夹 解析 程序要求从键盘输入一个字符串,并将结果保存到文件 modi1.txt 中。从已给定源程序的 main 主函数开始入手,main 主函数首先调用 clearFile 函数打开文件,然后调用 WriteFile 函数将字符串写入文件。 (1)第 1 个标识下的“using std;”是在程序中引入标准命名空间 std,对于 C+中
9、引入标准命名空间的格式,缺少 namespace,所以第 1 个标识下的语句修改为“using namespace std;”。 (2)第 2 个标识下,调用成员函数 open 中,输入输出方式是在 ios 类中定义的,所以“out1.open(“modi1.txt“,binary|app);”语句缺少类 ios,即第 2 个标识下的语句修改为“out1.open(“modi1.txt“,ios:binary|ios:app);“。 (3)第 3 个标识应该用流成员函数 put 输出字符,所以第 3 个标识下的语句修改为“out1.put(si);”。二、程序填空题(总题数:1,分数:30.0
10、0)2.使用 VC6 打开 下的源程序文件 modi2.cpp。请完成函数 fun(int x),该函数功能是判定 x 的所有的约数,并且在函数中调用写函数 WriteFile()将结果输出到 modi2.txt 文件中。 例如:x=10 的约数为 1,2,5,10。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #includeiostream #includefstream #includecmath using namespace std; void WriteFile(int c) ofstream out1; out1. open (“modi2. txt
11、“, ios_ base:binary|ios base:app); out1 c (分数:30.00)_正确答案:()解析:for(int i=1; i=x; i+) if(x%i=0) /如果 x 被 i 整除,那么 i 为 x 的约数 WriteFile(i); /将约数 i 存入文件 答案考生文件夹 解析 (1)本题中函数的功能是求出约数。x 的约数就是能整除其的所有整数。可以从1 开始到 x,计算取余。如果整除该数为 x 的约数。 (2)从已给部分源程序的 main 主函数开始入手,核心函数 void fun(int x)中的 x 参数为要计算约数的整数。 (3)由 1 到 x,循环
12、判断其中是否有 x 的约数。 (4)如果 x 被 i 整除,那么 i 为 x 的约数。 (5)最后调用 WriteFile 函数,将约数 i 存入文件。三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp,其中定义了用于表示坐标的类 TestClass1,但类TestClass1 的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)声明 TestClass2 类为 TestClass1 类的友元类,请在注释/*1*后添加适当的语句。 (2)完成类的构造函数,分别对成员变量赋值,请在注释/*2*后添加适当的语句。 (3)完成类的构造
13、函数,分别对成员变量赋值,请在注释/*3*后添加适当的语句。 (4)完成计算平面上两点之间的距离函数 Distance,计算的方法如下:X 坐标之差的平方与 Y 坐标之差的平方之和的开方。请在注释/*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main 与其他函数中的任何内容。 #includeiostream #includecmath using namespace std; class TestClass1 /*1* public: /*2* X=a; Y=b; /*3* X=a; Y=0; void print() private: float X,Y; ;
14、 class TestClass2 public: float Distance(TestClass1 ; float TestClass2:Distance (TestClass1 /*4* (分数:40.00)_正确答案:()解析:(1)添加语句:friend class TestClass2; (2)添加语句:TestClass1(float a,float b) (3)添加语句:TestClass1(float a) (4)添加语句:result=sqrt(p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y); 答案考生文件夹 解析 在 VC 环境下打开程序,根
15、据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main 主函数开始入手,可以看出程序通过调用类 TestClass 实现各种输出操作。 (1)题目 1 要求“声明 TestClass2 类为 TestClass1 类的友元类”。C+中声明友元类的一般形式为friend 类名;,所以这里补全“friend class TestClass2;”。 (2)题目 2 要求“完成类的构造函数,分别对成员变量赋值”。程序中 TestClass1 类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名(类型 1 形参 1,类型 2 形参 2,),所以在第 2 个标识下补全“TestClass1(floata,float b)”。 (3)题目 3 要求“完成类的构造函数,分别对成员变量赋值”。同理,第三个标识下补全“TestClass1(float a)”。 (4)题目 4 要求“完成计算平面上两点之间的距离函数 Distance”。题目中已经给出了计算方法,X 坐标之差的平方与 Y 坐标之差的平方之和的开方。利用 C+中的开方函数 sqrt 补全函数中的两点之间的距离。即“result=sqrt(p.x-q.x)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y);”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1