1、国家二级 C+机试(操作题)模拟试卷 316及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include #include struCt TestClass0 *error* virtual void fun(); ; class TestClassl: public TestClass0 void fun() cou
2、tfun(); *error* p=*obj 2; p-fun(); return; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。阅读下列函数说明 和代码,补充空出的代码。完成函数 ToUpper(char*des, char*str),该函数实现把 str字符串中小写字符转换成大写字符,并存发在 des中。 例如: str=“aBcdrFGHijK”; 则: des=“ABCDEFGHIJK”; 注意:不能修改程序的其他部分,只能补充 Toupper()函数。 #include #define MAXLEN 1024 void ToUpper(char*
3、 des, char* str) void main() char destMAXLEN; char*str=“aBcdrFGHiJ K“; Toupper(dest, str); cout #include #include #include using namespace std; void WriteFile(int c) ofstream out1; out1 open(“modi3 txt“, ios base: app); out1=a stri =a stri=z,即该字符比 z小,而且比a大,如果满足该条件则在该字符基础上加上 (A-a)值转换为大写字母;如果是其他字符的话,无
4、需转换,直接刚该字符放到 des数组中。 三、综合应用题 3 【正确答案】 (1)添加语句: int year, month, day; (2)添加语句: year=y; month=m; day=d; (3)添加语句: Date operator+=(int m) (4)添加语句: coutyear“年 “month“月 “dav“日 “endl; 【试题解析】 (1)题目 l要求 “定义私有成员变量 year、 month、 day”。在 C+程序的 private区域中添加变量 year、 month、 day的定义,即在第 1个标识下添加“int year, month, day; ”
5、。 (2)题目 2要求 “完成构造函数,分别给 year、 month、 day赋值 ”。在程序中“Date(int y, int m, int d)”的构造函数中添加给 year、 month、 day赋值的语句,即在第 2个标识下添加 “year=y; month=m; day=d; ”。 (3)题目 3要求 “完成重 载符号 “+=”的定义 ”。在 C+中,运算符重载的定义方法是定义一个重载运算符的函数,格式为函数 operator+重载运算符号 +,所以这里补全 “Date operator+=(int m)”。 (4)题目 4要求 “完成函数 print()打印函数 ”。在 C+中的 print()函数中补全其打印功能,即在第四个标识下添加 “coutyear“年 “month“月 “day“日“endl; ”。