国家二级C++机试(操作题)模拟试卷513
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,该工程中包含程序文件main.cpp,其中有类CDate(“日期”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
原日期:2005—9—25
更新后的日期:2006—4—1
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include<iostream>
#include<cstdlib>
using namespace std;
clas sCDate//日期类
{
//ERROR*******found*******
protected:
CDate( ){};
CDate(int d,int m,int y)
{
//ERROR*******found*******
SetDate(int day=d,intmonth=m,int year=y);
};
void Display( );//显示日期
void SetDate(int day,int month,intyear)
//设置日期
{m_nDay=day;m_nNonth=month;m_nYear=year;}
private:
int m_nDay;//日
int m_nMonth;//月
int m_nYear;//年
};
void CDate::Display( )//显示日期
{
//ERROR*******found*******
cout<<m_Day<<\\
(1)public:
(2)SetDate(d,m,y);
(3)cout<<m_nYear<<\\
解析:(1)通过主函数中成员函数的调用可知这里应该为公有成员,而且构造函数必须为公有继承。
(2)主要考查考生对成员函数的掌握,程序在这里调用成员函数SetDate,直接把形参代入即可。
(3)题目要求输出原日期:2005—9—25。可以知道输出顺序为:先输出年,其次月,最后是日。
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,其中有整数栈类IntList、顺序栈类SeqList和链接栈类LinkList的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
4 6 3 1 8
4 6 3 1 8
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动//“****found****”。
#include<iostream>
using namespace std;
class IntStack{//整数栈类
public:
virtual void push(int)=0;
//入栈
virtual int pop( )=0;
//出栈并返回出栈元素
virtual int topElement( )
const=0;
//返回栈顶元素,但不出栈
virtualbool~sEmpty( )const=0;
//判断是否栈空
};
class SeqStack:public TntStack{
intdata[100];//存放栈元素的数组
int top;//栈顶元素的下标
public:
//*******found*******
SeqStack( ):_______{}//
把top初始化为-1表示栈空
void push(int n){data[++top]=n;}
//*******found*******
int pop( ){return_______;}
int topElement( )const{return data[top];}
bool isEmpty( )const{return 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 d;
}
int topElement( )const{return top->data;}
bool isEmpty( )const{returntop==NULL;}
};
void pushData(IntStack&st){
st.push(8);
st.push(1);
st.push(3);
st.push(6);
st.push(4);
}
void popData(IntStackst){
while(!st.isEmpty( ))
cout<<st.pop( )<<’ ’;
}
int main( ){
SeqStack Stl;pushData(St1);popData(st1);
cout<<endl;
LinkStack st2;pushData(st2);popData(st2);
cout<<endl:
return0;
}
(1)top(-1)
(2)datal[top–]
(3)top(NULL)
(4)p->next=top
解析:(1)主要考查考生对构造函数的掌握情况,先看语句注释:把top初始化为-1表示栈空,即要把top赋值为-1即可。
(2)主要考查考生对纯虚函数的掌握情况,先看纯虚函数在基类的注释:出栈并返回出栈元素。要返回栈顶元素可以通过ciata[top]得到,出栈同时要使top得往下移动,即top–。
(3)主要考查考生对构造函数的掌握情况,先看语句注释:把top初始化为NULL表示栈空,因此使用成员列表初始化直接把top赋值为NULL即可。
(4)主要考查考生对栈的掌握,push为入栈函数,top指向栈顶元素,因此新添加的指针的next要指向top,即p->next=top;。
综合应用题
3.请
本文档预览:3600字符,共4849字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载