1、国家二级 C+机试(操作题)模拟试卷 6及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。 注意:不要改动 main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 * * * * * * * * error* * * * * * * *的下面。 试题程序: #include void main() int i=0: char str120; cout int fun(char*data) void m
2、ain() char source1024; cout class A int a; public: *1* int geta()return a; ; class A1: public A int b; public: *2* int getb()return b; ; class A2: public A1 int c; public: *3* void show(: ) *4* ); void main() A2 a(8, 3, 7); cout=a&stri(=z)”。 二、简单应用题 2 【正确答案】 int fun(char*data) int MaxPos=0; if(data=
3、NULL) return-1: char MaxData=data0; if(MaxData=0) return-1; for(int i=1; datai!=0; i+) if(datai)=MaxData) MaxData=datai; MaxPos=i: return MaxPos; 【试题解析】 本题考查的是查找最大值算法。根据题意,首先检查传入参数的合法性,如不合法或为空串,则返回 -1,然后通过 for循环遍历整个字符串,将最大值字符保存到 MaxData内,并将最大位置保存给 MaxPos,最后返回 MaxPos。 三、综合应用题 3 【正确答案】 (1)“A(int x)a=x
4、; ”。 (2)“A1(int x, int y): A(y)b=x; ”。 (3)“A2(int x, int y, int z): A1(y, z)c=x; ”。 (4)“coutgeta()“getb()“cend1; ”。 【试题解析】 本题第 1处要求定义类 A的构造函数,该构造函数有一个整型的参数 x,在构造函数中请将 x赋值给数据成员 a,构造函数没有返回值类型,所以应填 “A(int x)a=x; )”。第 2处第 3处根据继承中对象的初始化语法规则可知。第4处要求调用基类成员函数,由于都是公有继承, geta()、 getb()都是自身类的公有函数,所以根据继承规则,在对象 A2中,依然是公有的可以通过对象 A2直接调用。