1、国家二级 C+机试(操作题)模拟试卷 472及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 projl,此工程中含有一个源程序文件 proj1 cpp。其中位于每个注释 “ ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The valRe is: 10 注意:只修改注释 “ ERROR *found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include using namespace std; class Member ERROR*found* private: Mem
2、ber(int val): value(val) int value; ; class MyClass Member m; public: ERROR*found* MyClass(int val) int GetValue()constreturn m value; ; int main() MyClass*obj=new MyClass (10); ERROR*found* 下列语句输出 obj指向类中的 value值 cout using namespace std; class IntStack 整数栈类 public: virtual void push(int)=0; 入栈 vir
3、tual int pop()=0; 出栈并返回出栈元素 virtual int topElement() const=0; 返回栈顶元素,但不出栈 virtual bool isEmpty()const=0; 判断是否栈空 ; class SeqStack: public IntStack int data100;存放栈元素的数组 int top; 栈顶元素的下标 public: *found* SeqStack(): _)把 top初始化为 -1表示栈空 void push(int n)data+top=n; *found* int pop()return_; ) int topElemen
4、t()const return datatop; ) bool isEmpty()constreturn top=-1; ; Struct Node int data; Node*next; ; class LinkStack: public IntStack Node*top; public: *found* LinkStack(): _) 把 top初始化为 NULL表示栈空 void push(int n) Node*p=new Node; p-data=n; *found* _; top=p; int pop() int d=top-data; top=top-next; return
5、 d; int topElement()constreturn top-data; bool isEmpty()constreturn top=NULL; ; void pushData(IntStack&st) st push(8); st push(1); st push(3); st push(6); st push(4); void popData(IntStack&st) while(!st isEmpty() cout #include using namespace std; class Person char name20; int age; char*addresS; pub
6、lic: Person()age=0; address=0; void name_change(char*_name); 名字修改函数 void age_change(int_age); 年龄修改函数 void address_change(char*_add); 地址修改函数 void info_display(); 人员信息显示 Person(); 析构函数 ; void writeToFile(const char*path); proj3 cpp #include #include #include“proj3 h“ using namespace std; void Person:
7、name_change(char*name) strcpy(name, _name); void Person: age_change(int_age) age=_age; void Person: address_change (char* add) if(address!=NULL)delete address; *333* *666* void Person: info_display() coutGetVahle()”。 二、简单应用题 2 【正确答案】 (1)top(-1) (2)datatop- (3)top(NULL) (4)p-next=top 【试题解析】 (1)主要考查考生
8、对构造函数的掌握情况,先看语句注释:把 top初始化为 -1表示栈空,即要把 top赋值为 -1即可。 (2)主要考查考生对纯虚函数的掌握情况,先看纯虚函数在基类的注释:出栈并返回出栈元素。要返回栈顶元素可以通过 datatop得到,出栈同时要使得 top往下移动,即 top-。 (3)主要考查考生对构造函数的掌握情况,先看语句注释:把 top初始化为NULL表示栈空,因此使用成员列表初始化直接把 top赋值为 NULL即可。 (4)主要考查考生对栈的掌握, push为人栈函数, top指向栈顶元素,因此新添加的指针的 next要指向 top,即 p-next=top;。 三、综合应用题 3
9、【正确答案】 address=new charstrlen(_add)+1;给类成员变量动态分配空间 strcpy(address, _add); 把字符串 add复制给 address 【试题解析】 函数 address_change(char* _add)的功能是地址修改,也就是说通过该函数把类的地址修改为 add字符串。类的私有成员 address是字符指针,因此首先要给 address分配空间,通过 new语句来实现:address=newcharstrlen(_add)+1;。接下来就是要复制字符串,使用系统函数strcpy,其用法为 strcpy(参数 1,参数 2),将参数 2的内容复制到参数 1中。