1、计算机二级(C+)上机考试 27 及答案解析(总分:-3.00,做题时间:90 分钟)1.改错题 使用 VC6 打开考生文件夹下的工程 test11_1,此工程包含一个源程序文件 test11_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下: ch1=7 ch2=9 源程序文件test11_1.cpp 清单如下: #include class Sample /* found */ char ch1,ch2 public: /* found */ friend void set(Sample s, char c1,char c2) s.ch1=c1; s.ch2=c2
2、; void print()coutstr; int num=CalcDigital(str); coutstr; int num=CalcDigital(str); cout=0) num_of_digital+; return num_of_digital; )解析:本题考查的是考生对于 if 条件判断语句与 for 循环语句的熟练使用程度。注意判断条件(判断是否是数字是直接比较 ASCII 码)的使用。 3.综合应用题 使用 VC6 打开考生文件夹下的工程 test12_3,此工程包含一个 test12_3.cpp,其中定义了类 Base 和类 A,类 A 公有继承 Base,但这两个类
3、的定义都并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义枚举类型变量 en,它包含两个枚举符 front 和 back,请在注释“/ * 1 * “之后添加适当的语句。 (2)在类 Base 中添加常成员虚函数 void E()的定义,该函数输出“In BaseE!“,请在注释“/ * 2 * “之后添加适当的语句。 (3)在类 A 中添加常成员虚函数 void E()的定义,该函数先调用基类中的虚函数 E()再输出“In AE!“,请在注释“/ * 3 * “之后添加适当的语句。 (4)完成类A 构造函数的定义,请使用参数列表的形式初始化类 A 的成员,并输出“A constru
4、ctor.“,请在注释“/ * 4 * “之后添加适当的语句。 输出结果如下: Base constructor. A constructor. In BaseE! In AE! In BaseP! In A! 1 A destructor. Base destructor. 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。 源程序文件 test12_3.cpp 清单如下: #include / * 1 * class Base protected: int b1; int b2; public: Base(); Base(); int Getb1()const return b1
5、; void Setb1(int x) b1 = x; int Getb2()const return b2; void Setb2(int y) b2 = y; void Print()const cout“In BaseP!“Base constructor.“Base destructor.“In A!“In AE!“A constructor.“A destructor.“a1.Getb1()_正确答案:((1) enum enfront,back; (2) virtual void E()const cout“In BaseE!“解析:主要考查考生对于枚举和虚函数的定义的掌握,注意(1)中枚举类型使用 enum 关键字定义,它实际上就是一个有名字的常量,定义格式如下:enum 枚举名枚举表,(2)中常成员函数的定义格式中const 的位置不能随便改动,因为 const 关键字是修饰其右侧文字的,(3)中调用基类函数 E 的方法Base:E()中使用了作用域符。