国家二级C++机试(操作题)模拟试卷641
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
Constructor called.
The value is 10
Max number is 20
Destructor called.
注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include<iostream>
using namespace std;
class MyClass{
public:
//ERROR **********found********
void MyClass(int i)
{value=i;cout<<”Con-structor called.”<<endl;)
int Max(int x,int y) {return x>y?x:y;)//求两个整数的最大值
//ERROR *******found********
int Max(int x,int y,int z=0)
//求三个整数的最大值
{
if(x>y)
return x>z?x:z;
else
return y>z?y:z;
}
int GetValue()const{return value;}
~MyClass(){cout<<”Destructor called.”<<endl;}
private:
int value;
);
int main()
{
MyClass obj(10);
//ERROR **********found**********
cout<<”The value is” <<value()<<endl,
cout<<”Max number is” <<obj.Max(10,20)<<endl;
return 0;
}
(1)MyClass(int 1)
(2)int Max(int x, int y, int z)
(3)cout<< \\
解析:(1)考查构造函数,构造函数前不加void或其它任何类型名,直接使用MyClass(int i)即可。
(2)主要考查函数重载,在
int Max(int x, int y) {return x>y ? x :y;}中两个形参变量都是int型,而语句int Max(int x, int y, int z = 0)的前两个形参也都是int型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把intz=0 改为int z,才能构成函数重载。
(3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为:
The element of stack are:4 3 2 1
注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//**** found****”。
//proj2.cpp
#include<iostream>
using namespace std;
const int size=5;
class Stack;
class Item
{
public:
//********found********
Item(const int&val):________{ }//构造函数对item进行初始化
private:
int item;
Item*next;
friend class Stack;
);
class Stack
{
public:
Stack():top(NULL){ }
~Stack();
int Pop();
void Push(const int&);
private:
Item * top;
};
Stack::~Stack()
{
Item *p=top,*q;
while(p!=NULL)
{
q=p->next;
//********found********
________; //释放P所指向的节点
p=q;
}
}
int Stack::Pop()
{
Item * temp;
int ret;
//********found********
________; //使temp指向栈顶节点
ret=top->item;
top=top->next:
delete temp;
return ret;
}
void Stack::Push(const int&val)
{
Item * temp=new Item(val);
//********found********
________;
//使新节点的next指针指向栈顶数据
top=temp;
}
int main()
{
Stack s;
for(int i=1;i<size;i++)
s.Push(i);
cout<<”The element of stackare:”;
for(i=1,i<size,i++)
cout<<S.Pop()<<’\t’;
return 0;
}
(1)item(val)
(2)delete [ ]p
(3)temp = top
(4)temp->next=top
解析:(1)主要考查构造函数,对私有成员进行初始化,即item(val)。
(2)主要考查delete语句释放指针,一般格式为:delete [ ]指针。
(3)指向栈顶节点的是top指针,要使temp指向栈顶节点,故使用语句temp= to
本文档预览:3600字符,共6335字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载