1、国家二级 C+机试(操作题)模拟试卷 349及答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 pmjl,此工程中含有一个源程序文件pmj1cpp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: This object is no1 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusing namespace std;class NyCl
2、asspublic: NyClass():count(0)cout”This object is”;)ERROR*found* void Inc()const tout”no”+countend1;private:ERROR*found* int count=0; ; int main() NyClass*obj=new NyClass; ERROR*found* *objInc(); return 0; (分数:2.00)_2.请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 proj1,该工程中含有一个源程序文件proj1epp。其中位于每个注释“ERROR*found*
3、”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:12 3 4 5 6 7 8 9 10 注意:只能修改注释“ERROR*found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusing namespace std;class MyClasspublic: MyClass(int len) array=new intlen; arraySize=len; for(int i=0;iarraySize;i+) arrayi=i+1; 一 MyClass() ERROR*found* delete arrayi; ) void Print(
4、)const for(int i=0;iarraySize;i+)ERROR*found* cinarrayi”; Coutendl; private: int*array; int arraySize; ); int main() ERROR*found*MyClass obj;objPrint();return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj2下的工程 pmj2,该工程中包含程序文件maincpp,其中有类 Mammal(“哺乳动物”)、类 Elephant(“大象”)、类 Nome(“老鼠”)
5、的定义和主函数 main的定义。请在横线处填写适当的代码并删除横线,以实现上述定义。此程序的正确输出结果应为: ELEPHANT MOUSE 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;enum category ENPTY,ELEPHANT,NOUSE);char*output=”ENPTY”,”ELEPHANT”,”NOUSE”;ClasS Nammalpublic: Nammal(char*str) *found*name=new_strcpy(name,str);
6、 virtual char*WhoAmI()=0; virtualNammal()deletename; void Print()toutWhoAmI()end1;)private: char*name;class Elephant:public Nammalpublic:*found*Elephant(char*str):_ char*WhoAmI()return outputELEPHANT;);class Mouse:public Mammalpublic: Mouse(char*str):Mammal(str)*found*char*WhoAmI()_ ; int main() *fo
7、und*Mammal*pm=new_(”Huanhuan”); pm-Print(); delete pm; pm=new Mouse(”Micky”); pm-Print(); delete pm; return 0; (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)4.使用 VC6打开考生文件夹 proj3下的工程 proj3,其中声明了 MyString类,它是一个用于表示字符串的类。成员函数 reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在 main函数中给出了一个测试数据,此情况下程序的输出应该是: This
8、is a string gnirts a si sihT 注意:只需在函数 reverse的*333*和*666*之间填入若干语句,不要改动程序中的其他内容。MyStringh#includeiostreamusing namespace std;char*dup(const char*);class MyString char*str;public: MyString(const char*s=”):str(dup(S) MyString(const MyString strcpy(P,S); return p; void MyString:reverse() *333* *666* voi
9、d writeToFile(const char*path); writetoFilecpp #includefstream #include”MyStringh” void writeToFile(const char*path) char full50; strcpy(full,path); strcat(full,”outdat”);ofstream outfile(full); if(outfilefail()cerr”打开输出文件失败!”;return;) MyString m1=”This is another string”; MyString m2(”字符串反转演示”); ou
10、tfilemlm2; m1reverse(); m2reverse(); outfilemlm2; outfileclose(),(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 349答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 pmjl,此工程中含有一个源程序文件pmj1cpp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: This object is no1 注意:只修改注释“ERROR *found*”
11、的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusing namespace std;class NyClasspublic: NyClass():count(0)cout”This object is”;)ERROR*found* void Inc()const tout”no”+countend1;private:ERROR*found* int count=0; ; int main() NyClass*obj=new NyClass; ERROR*found* *objInc(); return 0; (分数:2.00)_正确答案:(正确答案:
12、(1)void Inc() (2)int count; (3)obj 一Inc();)解析:解析:(1)考查考生对 const的掌握,在 Inc函数的函数体cout“no”+count”,而不能使用“”。2.请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 proj1,该工程中含有一个源程序文件proj1epp。其中位于每个注释“ERROR*found*”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:12 3 4 5 6 7 8 9 10 注意:只能修改注释“ERROR*found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiost
13、reamusing namespace std;class MyClasspublic: MyClass(int len) array=new intlen; arraySize=len; for(int i=0;iarraySize;i+) arrayi=i+1; 一 MyClass() ERROR*found* delete arrayi; ) void Print()const for(int i=0;iarraySize;i+)ERROR*found* cinarrayi”; Coutendl; private: int*array; int arraySize; ); int mai
14、n() ERROR*found*MyClass obj;objPrint();return 0;(分数:2.00)_正确答案:(正确答案:deletearray; COUtarrayi解析:解析:(1)语法错误,使用 delete语句删除一个指针时,直接把指针变量的名称放在 delete后面即可。 (2)考查考生对输入、输出语句的运用。使用 cout进行数据输出操作,一般格式为:COUtExpr;。其中,Expr 代表一个表达式,“”称为插入运算符,该语句的含义是,将表达式Expr的值输出到屏幕上。使用 cin进行数据输入操作,一般格式为:cinvar;。其中,vat 代表一个变量,“”称为提
15、取运算符,该语句的含义是,将用户输入的数据保存到 var中。 (3)考查语句的初始化,我们来看 MyClass类的构造函数: MyClass(lnt len) array=new intlen; 给数组动 态分配空间,大小为 len arraysize=len; 赋值 for(int i=0;iarraySize;i+) arrayi=i+1; 循环给数组赋 值,从 1到 10 二、简单应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 pmj2下的工程 pmj2,该工程中包含程序文件maincpp,其中有类 Mammal(“哺乳动物”)、类 Elephan
16、t(“大象”)、类 Nome(“老鼠”)的定义和主函数 main的定义。请在横线处填写适当的代码并删除横线,以实现上述定义。此程序的正确输出结果应为: ELEPHANT MOUSE 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;enum category ENPTY,ELEPHANT,NOUSE);char*output=”ENPTY”,”ELEPHANT”,”NOUSE”;ClasS Nammalpublic: Nammal(char*str) *found*name=n
17、ew_strcpy(name,str); virtual char*WhoAmI()=0; virtualNammal()deletename; void Print()toutWhoAmI()end1;)private: char*name;class Elephant:public Nammalpublic:*found*Elephant(char*str):_ char*WhoAmI()return outputELEPHANT;);class Mouse:public Mammalpublic: Mouse(char*str):Mammal(str)*found*char*WhoAmI
18、()_ ; int main() *found*Mammal*pm=new_(”Huanhuan”); pm-Print(); delete pm; pm=new Mouse(”Micky”); pm-Print(); delete pm; return 0; (分数:2.00)_正确答案:(正确答案:(1)charstrlen(str)+1; (2)Mammal(str) (3)return outputMOUSE; (4)Elephant)解析:解析:(1)主要考查分配空间,程序要给 name分配空间,由下一条语句中 strcpy(name,str)可知程序要把字符串 str复制给 nam
19、e,因此要分配的空间大小为 strlen(str)+1。 (2)主要考查考生对构造函数的掌握,因为 Elephant类是 Mammal类的派生类,所以其构造函数要使用成员列表先对 Mammal类初始化。 (3)主要考查考生对枚举类型的掌握,先看程序:enumcategoryEMPTY,ELEPHANT,MOUSE。再参考Elephant类中的 WhoAmI函数:char*WhoAmI()return outputELEPHANT;。可知这里要填写的返回语句为:return outputMOUSE;。 (4)主要考查考生对派生类的掌握,题目要求输出: ELEPHANT MOUSE 可知,要先调用
20、 Elephant类的 WhoAmI函数,因此给指针 pm分配 Elephant类空间。三、综合应用题(总题数:1,分数:2.00)4.使用 VC6打开考生文件夹 proj3下的工程 proj3,其中声明了 MyString类,它是一个用于表示字符串的类。成员函数 reverse将字符串反转,例如“abcde”反转后就成了“edcba”。请补充完整函数reverse。在 main函数中给出了一个测试数据,此情况下程序的输出应该是: This is a string gnirts a si sihT 注意:只需在函数 reverse的*333*和*666*之间填入若干语句,不要改动程序中的其他内
21、容。MyStringh#includeiostreamusing namespace std;char*dup(const char*);class MyString char*str;public: MyString(const char*s=”):str(dup(S) MyString(const MyString strcpy(P,S); return p; void MyString:reverse() *333* *666* void writeToFile(const char*path); writetoFilecpp #includefstream #include”MyStr
22、ingh” void writeToFile(const char*path) char full50; strcpy(full,path); strcat(full,”outdat”);ofstream outfile(full); if(outfilefail()cerr”打开输出文件失败!”;return;) MyString m1=”This is another string”; MyString m2(”字符串反转演示”); outfilemlm2; m1reverse(); m2reverse(); outfilemlm2; outfileclose(),(分数:2.00)_正确答案:(正确答案:VOid MyString:reverse() int i,j; char ch; int len=strlen(str); for(i=0,j=len 一 1;i解析:解析:程序定义了 MyString类,它包含一个成员:str 字符指针;默认构造函数和复制构造函数通过 dup()函数,动态分配地址 p将参数拷贝到 p指向的内存空间,再使用 p初始化 str;show()成员函数将 str指向的字符串输出;reverse()成员函数将 str指向的字符串反转;重载的
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1