1、二级 C+机试-71 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:33.00)1.使用 VC6 打开考生文件夹下的工程 test16_1,此工程包含一个源程序文件 test16_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:Which act(a or b)?bact1act2Bact3Bact4Bend源程序文件 test16_1.cpp 清单如下:#includeiostream.hclass Apublic:virtual void act1()cout“actl/n“;act2();void act2()cout“ac
2、t2/n“;act3();/*+* found */void act3()cout“Aact3/n“;act4();/* found */virtual void act4cout“Aact4/n“;act5();void act5()cout“Aend/n“;class B:public Avoid act3()cout“Bact3/n“;act4();void act4() cout“Bact4/n“;act5() ;void act5() cout“Bend/n“;void main (void)char c;A *a;cout“Which act (a or b) ?“;/* foun
3、d */cinc;if(c=a)a = new A;elsea = new B;a-act1 ( );delete a;(分数:33.00)填空项 1:_二、2简单应用题(总题数:1,分数:33.00)2.请编写一个函数 void fun(char ss),该函数将字符串 ss 翻转,如 ss 为“123abc”则翻转后为“cba321”。注意:用数组方式及 for 循环来实现该函数。注意:部分源程序已存在文件 test16_2.cpp 中。请勿修改主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填写若干语句。文件 test16_2.cpp 的内容如下:#includei
4、ostream.h#includestring.hvoid fun (char ss);void main ( )char s80;cout “请输入字符串: “;cins;fun(s);cout “逆序后的字符串: “ send1;void fun(char ss)(分数:33.00)_三、3综合应用题(总题数:1,分数:34.00)3.使用 VC6 打开考生文件夹下的工程 test16_3,此工程包含一个源程序文件 test16_3.cpp,其中定义了类 Cat,但类 Cat 的定义并不完整。请按要求完成下列操作,将类 Cat 的定义补充完整。(1)定义类 Cat 的保护数据成员 itsA
5、ge 用于表示年龄,它是 int 型的数据。请在注释“/*1*”之后添加适当的语句。(2)定义类 Cat 的保护数据成员 GetAge()的类外定义,返回成员的 itsAge 值,请在注释“/*2*”之后添加适当的语句。(3)完成成员函数 SetAge(int age)的类外定义,把数据成员 itsAge 赋值为参数 age 的值,请在注释“/*3*”之后添加适当的语句。(4)完成成员函数 Meow 的类外定义,使其输出字节符串“meow.”到屏幕上。请在注释“*4*”后添加适当的语句。输出结果如下:meowkitty is a cat who is 5 years oldmeow注意:除在指
6、定位置添加语句之外,请不要改动程序中的其他内容。源程序文件 test16_3cpp 清单如下:#includeiostream.hclass Catpublic:int GetAge();void SetAge(int age);void Meow();protected:/*1*;int Cat:GetAge()/*2*void Cat:SetAge(int age)/*3*void Cat: :Meow()/*4*void main ( )Cat kitty;kitty.Meow();kitty. SetAge(5);cout“kitty is a cat who is “;coutkit
7、ty.GetAge();cout“ years old./n“;kitty. Meow();(分数:34.00)_二级 C+机试-71 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:33.00)1.使用 VC6 打开考生文件夹下的工程 test16_1,此工程包含一个源程序文件 test16_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:Which act(a or b)?bact1act2Bact3Bact4Bend源程序文件 test16_1.cpp 清单如下:#includeiostream.hclass Apublic:v
8、irtual void act1()cout“actl/n“;act2();void act2()cout“act2/n“;act3();/*+* found */void act3()cout“Aact3/n“;act4();/* found */virtual void act4cout“Aact4/n“;act5();void act5()cout“Aend/n“;class B:public Avoid act3()cout“Bact3/n“;act4();void act4() cout“Bact4/n“;act5() ;void act5() cout“Bend/n“;void m
9、ain (void)char c;A *a;cout“Which act (a or b) ?“;/* found */cinc;if(c=a)a = new A;elsea = new B;a-act1 ( );delete a;(分数:33.00)填空项 1:_ (正确答案:(1)错误:void act3()cout“Aact3/n“;act4();正确:virtual void act3()cout“Aact3/n“;act4();(2)错误:virtual void act4cout“Aact4/n“;act5(); 正确:virtual void act4()cout“Aact4/n
10、“;act5();(3)错误:cinc;正确:cinc;)解析:解析(1)主要考查考生对于虚函数使用规则的理解,要实现对函数 act3 的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;(2)主要考查考生对于函数定义的掌握,虽然参数表为空,但括号是不能省略的:(3)主要考查考生是否会使用流输入操作,本题中使用的是流输出符。二、2简单应用题(总题数:1,分数:33.00)2.请编写一个函数 void fun(char ss),该函数将字符串 ss 翻转,如 ss 为“123abc”则翻转后为“cba321”。注意:用数组方式及 for 循环来实现该函数。注意:
11、部分源程序已存在文件 test16_2.cpp 中。请勿修改主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填写若干语句。文件 test16_2.cpp 的内容如下:#includeiostream.h#includestring.hvoid fun (char ss);void main ( )char s80;cout “请输入字符串: “;cins;fun(s);cout “逆序后的字符串: “ send1;void fun(char ss)(分数:33.00)_正确答案:(void fun(char ss)int n=strlen(ss);for(int i=0;
12、i(n/2); i+)char c=ssi;ssi=ssn-1-i;ssn-1-i=c;)解析:解析 本题考查的是考生利用数组及 for 循环、if 条件判断等基本控制语句解决实际问题的能力,基本算法是根据字符串的对称性把对应的两个字符串互相换位。三、3综合应用题(总题数:1,分数:34.00)3.使用 VC6 打开考生文件夹下的工程 test16_3,此工程包含一个源程序文件 test16_3.cpp,其中定义了类 Cat,但类 Cat 的定义并不完整。请按要求完成下列操作,将类 Cat 的定义补充完整。(1)定义类 Cat 的保护数据成员 itsAge 用于表示年龄,它是 int 型的数据
13、。请在注释“/*1*”之后添加适当的语句。(2)定义类 Cat 的保护数据成员 GetAge()的类外定义,返回成员的 itsAge 值,请在注释“/*2*”之后添加适当的语句。(3)完成成员函数 SetAge(int age)的类外定义,把数据成员 itsAge 赋值为参数 age 的值,请在注释“/*3*”之后添加适当的语句。(4)完成成员函数 Meow 的类外定义,使其输出字节符串“meow.”到屏幕上。请在注释“*4*”后添加适当的语句。输出结果如下:meowkitty is a cat who is 5 years oldmeow注意:除在指定位置添加语句之外,请不要改动程序中的其他
14、内容。源程序文件 test16_3cpp 清单如下:#includeiostream.hclass Catpublic:int GetAge();void SetAge(int age);void Meow();protected:/*1*;int Cat:GetAge()/*2*void Cat:SetAge(int age)/*3*void Cat: :Meow()/*4*void main ( )Cat kitty;kitty.Meow();kitty. SetAge(5);cout“kitty is a cat who is “;coutkitty.GetAge();cout“ years old./n“;kitty. Meow();(分数:34.00)_正确答案:(1)int itsAge;(2)return itsAge;(3)itsAge=age;(4)cout“meow./n“;)解析:解析 本题主要考查考生对于类的定义和成员函数的定义的深刻理解,考查的都是最基本的操作。