1、国家二级 C+机试(操作题)-试卷 24 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modilepp,但该程序运行有问题,请改正 main 函数中的错误,使程序的输出结果是: nember=l nember=10 nember:100 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 #lnclude C1ass TeStClass public: TestClass(int i) nember=i; void SetNember(int
2、m) nember=m; int GetNember()const( return nember; void Print()const cout_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(int x),该函数功能是判定 x的所有的约数,并且在函数中调用写函数 WriteFile0 将结果输出到 modi2txt 文件中。 例如:x=10 的约数为 1,2,5,10。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构 #include #include #include using na
3、mespace std ; void WriteFile(int c) ofstream outl ; outlopen(”modi2txt”,ios base:binary I losbase:app); outlC_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示人基本信息的类CHumanInf0,但类 CHumanlnfo 的定义并不完整。请按要求完成下列操作,将类 CHumanlnfo 的定义补充完成: (1)定义私有数据成员 bloodType 用于表示血型,血型为 char 型的数据。请在注释“ *1*
4、”之后添加适当的语句。 (2)完成构造函数的定义,要求具有缺省值,缺省值为身高 175,体重 70,血型 A。请在注释“ *2*”之后添加适当的语句。 (3)完成类外CHumanInfo 成员函数 Setlnfo 的定义。请在注释“ *3*之后添加适当的语句. (4)在主函数中调用成员函数 Setlnfo,把对象 d2 的三个私有数据成员分别设定为身高 170,体重 64,血型为 B。请在注释“ *4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include C1ass CHumanInf0 private: int height; int wei
5、ght; *1* public: *2* :height(ht),weight(wt), bloodType(bt);CHumanInfo(CHumanlnfo int GetHeight() return height; int GetWeight() return weight; int GetBloodType() return bloodType; void SetInfo(int ht,int wt,char bt); void Display(); ); *3* height=ht; weight=wt ; bloodType=bt; void CHumanInfo:Display
6、() coutheight “cm, ” weight“Kg,BloodType” bloodType_国家二级 C+机试(操作题)-试卷 24 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modilepp,但该程序运行有问题,请改正 main 函数中的错误,使程序的输出结果是: nember=l nember=10 nember:100 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 #lnclude C1ass TeStClass pub
7、lic: TestClass(int i) nember=i; void SetNember(int m) nember=m; int GetNember()const( return nember; void Print()const cout_正确答案:(正确答案:(1)TeStClasS obj 1(1); (2)obj 1SetNember(10); (3)obj2SetNember(100);)解析:解析:程序要求输出 nember 的值为 1,10,100。从已定源程序的 main 主函数开始入手,可以看出程序定义了 TestClass 类的对象 objl 和 obj2,然后通过调
8、用类的成员函数实现了题目中的输出结果。 解题思路 (1)第 1 个标识下,“TestClass objl;”语句是声明 TestClass 类的对象 objl,根据TestClass 类构造函数的定义 TestClass(int i1,存在整型参数,并且题目要求第一个输出结果为 1,所以补全参数 1,即第 1 个标识下的“TesClaSsobjl(1);”。 (2)第 2 个标识下的“objlnember=10;”应该是调用成员函数 SetNember 赋值。在 C+中成员函数的使用形式应该是:对象名成员函数,所以修改为“objlSetNember(10);”。 (3)类是对象的抽象,而对象是
9、类的具体实例。第 3 个标识下“TestClassSetNember(100);”语句中的 TestClass 为类,并不是对象,这里应该是使用定义的对象,即 0bj2,修改为“obj2SetNember(100);”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(int x),该函数功能是判定 x的所有的约数,并且在函数中调用写函数 WriteFile0 将结果输出到 modi2txt 文件中。 例如:x=10 的约数为 1,2,5,10。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结
10、构 #include #include #include using namespace std ; void WriteFile(int c) ofstream outl ; outlopen(”modi2txt”,ios base:binary I losbase:app); outlC_正确答案:(正确答案:for(int i=1;i=x;i+) if(xi=0) 如果 x 被 i 整除,那么 i 为 x 的约数 WriteFile(i); 将约数 i 存入文件 )解析:解析:(1)本题中函数的功能是求出约数。x 的约数就是能整除其的所有整数。可以从 1 开始到 x,计算取余。如果整除该
11、数为 x 的约数。 (2)从已给部分源程序的 main 主函数开始入手,核心函数 void fun(int x)中的 X 参数为要计算约数的整数。 解题思路 (1)由 1 到 x,循环判断其中是否有 x 的约数。 (2)如果 xX 被 i 整除,那么 i 为 x 的约数。 (3)最后调用 WriteFile 函数,将约数 i 存入文件。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示人基本信息的类CHumanInf0,但类 CHumanlnfo 的定义并不完整。请按要求完成下列操作,将类 CHumanlnfo 的定
12、义补充完成: (1)定义私有数据成员 bloodType 用于表示血型,血型为 char 型的数据。请在注释“ *1*”之后添加适当的语句。 (2)完成构造函数的定义,要求具有缺省值,缺省值为身高 175,体重 70,血型 A。请在注释“ *2*”之后添加适当的语句。 (3)完成类外CHumanInfo 成员函数 Setlnfo 的定义。请在注释“ *3*之后添加适当的语句. (4)在主函数中调用成员函数 Setlnfo,把对象 d2 的三个私有数据成员分别设定为身高 170,体重 64,血型为 B。请在注释“ *4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其
13、他内容。 #include C1ass CHumanInf0 private: int height; int weight; *1* public: *2* :height(ht),weight(wt), bloodType(bt);CHumanInfo(CHumanlnfo int GetHeight() return height; int GetWeight() return weight; int GetBloodType() return bloodType; void SetInfo(int ht,int wt,char bt); void Display(); ); *3* h
14、eight=ht; weight=wt ; bloodType=bt; void CHumanInfo:Display() coutheight “cm, ” weight“Kg,BloodType” bloodType_正确答案:(正确答案:(1)添加语句:char bloodType; (2)添加语句:CHumanInfo(int ht=175,intwt=70,char bt=A) (3)添加语句:void CHumanInfo:SetInfo(intht,int wt,char bt) (4)添加语句:h2SetInfo(170,64,B)解析:解析:(1)第 1 个标识下定义私有数据
15、成员 char 型的 bloodType,故第 1 个标识下应添加“char bloodType;”。 (2)构造 CHumanlnf00 完成三个成员的初始化,并且带有缺省值参数,缺省值为身高175,体重 70,血型 A,由函数体语句可知参数名分别为 ht、叭和 bt,因此第 2 个标识下应添加“CHumanlnfo(int ht=-l 75,int wt=70,charbt=-A)”。 (3)第 3 个标识下在类外完成成员函数Setlnfo 的定义,在类外定义成员函数的格式为:(),故第 3 个标识下应添加“voidCHumanlnfo:Setlnfo(int ht,int wt,char bt)”。 (4)调用函数 Setlnf00 需要 3 个参数,程序要求把对象 d2 的三个私有数据成员分别设定为身高 170,体重 64,血型为 B,即把这三个值传入函数 SetlnfoO,因此第 4 个标识下应添加“h2Setlnfo(170,64,B);”0