1、国家二级 C+机试(操作题)模拟试卷 314及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到 s1, s2中。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include void main() char* s1; char s21024; cout #inClude #include using namespace std; void Write
2、File(int c) ofstream out1; out1 open(“modi2 txt“, ios base: binary ios_base: app); out1 Class Person public: *l* void print(); int Sex; ; class Man: public Pemson ( public: Man() *2* void print() cout“Man“endl: ; ; class Woman: public Person public: Woman() *3* void print() cout“Woman“endl: ; ; *4*
3、cout“Sex=“; p print(); int main() Man m; fun(m); Woman n ; fun(n); return 0; 国家二级 C+机试(操作题)模拟试卷 314答案与解析 一、基本操作题 1 【正确答案】 (1)s1=new char1024, (2)deletes1; (3)删除 “delete s2; ”语句 【试题解析】 (1)s1变量为指针变量,在使用前要对其分配空间,所以第 1个标识下添加 “s1=new char1024; ”。 (2)为了防止内存空间的泄漏,指针变量使用后,要将其空间释放,第二个标识下 “deletes1; ”。 (3)s2是
4、数组变量,空间是在使用前静态分配的,不是使用前动态分配的,所以使用后不用释放内存空间,这里应该删除 “delete s2; ”。 二、简单应用题 2 【正确答案】 for(int i=l; i=x; i+) if(x i=0) 如果 x被 i整除,那么 i为 x的约数 WriteFile(i); 将约数 i存入文件 【试题解析】 (1)由 1到 x,循环判断其中是否有 x的约数。 (2)如果 X被 i整除,那么 i为 X的约数。 (3)最后调用 WriteFile函数,将约数 i存入文件。 三、综合应用题 3 【正确答案】 (1)将 “void print(); ”补充完整为: virtual
5、 void print(); (2)添加语句: sex=1; (3)添加语句: sex=0; (4)添加语句: Void fun(Person p) 【试题解析】 (1)题目 1要求 “基类 Person完成打印功能,定义其中的打印函数为虚函数 ”。虚函数是函数的一种,定义虚函数,在函数名前声明 virtual就可以了,所以第 1个标 识下的 “void print(); ”语句修改为 “virtual void print(); ”。 (2)题目 2要求 “类 Man继承于 Person,在构造函数中设置性别为 1”。基类Person中变量 sex是用来存放性别的, Man继承 Person,所以 Man中性别的变量可以使用基类中的 sex变量,设置性别为 1,即 “sex=1; ”。 (3)题目 3要求 “类 Woman继承于 Person,在构造函数中设置性别为 0”。同(2),在第三个标识下添加 “sex=0; ”。 (4)题目 4要求 “实现函数 fun(),用于传递不同的类型,打印出性别 ”。根据“p print(); ”语句知道, fun()函数的形参为指针 P,由于它调用了基类 Person中的成员函数 print(),所以 P的基类为 Person,即添加函数 fun()的定义为 “void fun(Person p)”。