1、国家二级 C+机试(操作题)模拟试卷 80及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi l cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: 30 130 注意:错误的语句在 *error*的下面,修改该语句即可。 #include int a=10; class cobj public: cobj() a=b=0; void display() *error* cout #include #define MAXLEN 1 024 char*convert(char*des, char* str) void main(
2、) char destMAXLEN; char*str: ” Ab cDeF hJ K”; cout *1* class objA0 private: static int m A0 ; *2* ; int objA0: m A0=1 0; class objAl private: int m A1; *3* public: objAl(int i) m A1=i; ; int func(ohjAl couta+=a; (3)a+=: a; 【试题解析】 (1)成员函数 display()打印变量 a和 b的值,即 cout输出 a和 b的值, cout流中的数据是用流插入运算符 “a+=a:
3、 ”0 (3)func20函数虽然没有参数,但是成员变量 a和全局变量 a重名,第 3个标识下“a+=a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用 func20函数后,输出 “130”,说明 a为 13, b为 0,因此是成员变量与全局变量 a的和赋给成员变量 a,正确的写法是 “a+=: a, “: a”表示是全局变量 a。 二、简单应用题 2 【正确答案】 int j=0; for(int i=0; stri!=NULL; i+) if(stri!=&isprint (stri)判断是否是可打印的而且非空格字符 desj+=stri, 添力口 desj=NUL
4、L;最后一个 ?字符为空 return des; 【试题解析】 (1)由审题分析可知,可利用循环来逐个检索 s仃中的字符,循环变量 i从 0开始,直到 str数组的结束,即 stri=0为循环结束条件。 (2)在循环中用 if语句判断该字符是否是空格或者不可打印字符:if(stri!=”&isprint(stri),如果满足条件说明不是空格或者不是不可打印字符添加到 des中,不满足则无须添加到 des中。 三、综合应用题 3 【正确答案】 (1)添加语句: class objAl; (2)添加语句: friend int func(objAl&obj); (3)添加语句: friend in
5、t func(objAl&obj); (4)添加语句: return obj m A1*objA0: m A0; 【试题解析】 (1)类的声明格式为: “class: ”,因 此第 1个标识下应添加“class objAl; ”。 (2)按照友元的定义格式,友元函数是在类声明中由关键字 friend修饰的非成员函数, func函数在类外部给出了具体的实现形式,即 “int func(objAl&obj)”,因此第2个标识下应添加 “friend int func(objAl obj); ”,这里参数是 objAl类对象 obj。 (3)第 3个标识下和题目 2要求一样,均是声明友元函数,因此第 2标识下应添加“friend int func(objAl&obj); ”。 (4)通过参数 obj对象可以直接访 问 obj m_Al, objA0的静态变量 m A0是所有对象的共享成员,其访问形式为: obiA0: m A0,因此第 4个标识下应添加“return obj m A1*0bjA0: mA0; ”。