国家二级C++机试(操作题)模拟试卷301
基本操作题
1.请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,该工程中包含程序文件main.cpp,其中有类Clock(“时钟”)的定义和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Initial times are
0 d:0 h:0 m:59 s
After one second times are
0 d:0 h:1 m:0 s
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class clock
{
public:
Clock(unsigned long i=0);
void set(unsigned long i=0);
void print()const;
void tick(); //时间前进一秒
Clock operator++();
private:
unsigned long total_sec,seconds rminutes,hours,days;
};
Clock∷Clock(unsigned long i)
:total_sec(i),seconds(i%60),
minutes((i/60)%60),
hours((i/3600)%24),
days(i/8 6400){)
void Clock∷set(unsigned long i)
{
total sec=i;
seconds=i%60;
minutes=(i/60)%60;
hours=(i/3600)%60;
days=i/86400;
}
//ERROR *******found*******
void Clock∷print()
{
cout <<days<< \\
(1)void Clock∷pnnt()const
(2)set(++total_sec);
(3)return * this;
解析:(1)主要考查考生对成员函数的掌握,由Clock类中对函数print的声明void print()const;可知,在定义print函数时少了const。
(2)主要考查考生对++操作的掌握,根据函数要求,时间要先前进一秒,再调用函数set,因此total_see++应改为++total_sec。
(3)主要考查考生对this指针的掌握,函数要求返回值Clock,即返回一个类,而不是指针,因此使用*this。
简单应用题
2.请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含程序文件main.cpp,其中有类Mammal(“哺乳动物”)、类Elephan(“大象”)、类Nouse(“老鼠”)的定义和主函数main的定义。请在横线处填写适当的代码并删除横线,以实现上述定义。此程序的正确输出结果应为:
ELEPHANT
MOUSE
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****
found****”。
#include<iostream>
using namespace std;
enum category {EMPTY,ELEPHANT,NOUSE};
char * output[]={\\
(1)char[strlen(str)+1];
(2)Mammal(str)
(3)return output[MOUSE];
(4)Elephant
解析:(1)主要考查分配空间,程序要给name分配空间,由下一条语句中strcpy(name,str)可知程序要把字符串str复制给name,因此要分配的空间大小为strlen(str)+1。
(2)主要考查考生对构造函数的掌握,因为Elephant类是Mammal类的派生类,所以其构造函数要使用成员列表先对Mammal类初始化。
(3)主要考查考生对枚举类型的掌握,先看程序:enum category{EMPTY,ELEPHANT,MOUSE}。再参考Elephant类中的WhoAmI函数:char*WhoAmI(){return output[ELEPHANT];}。可知这里要填写的返回语句为:return output[MOUSE];。
(4)主要考查考生对派生类的掌握,题目要求输出:
ELEPHANT
MOUSE
可知,要先调用Elephant类的WhoAml函数,因此给指针pm分配Elephant类空间。
综合应用题
3.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明了一个单向链表类sLst。sList的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Pepend。在main函数中给出了一组测试数据,此时程序的输出应为:
B->A->
###
A->
###
A->
###
exiting inner block
exiting outer block
注意:只在函数Prepend的“********333********”和“********666********”之间填入若干语句,不要改动程序中的其他内容。
//SLiSt.hstruct sListItem{
char data;
sListItem * next;
};
class sList{public:
sList():h(0){}//0表示空链表
~sList();
void Prepend(char c);//在链表前端加入元素
void Del();//删除链表首元素
sListItem * First()const{Eeturn h;)//返回链表首元素
void Print()const;//打印链表内容
void Release();//销毁链表
private:
sListItem * h;//链表头
},
void writeToFile(const char * );
//main.cpp
#include<iostream>
#include\\
sListItem * temp=new sListItem;
//动态分配空间给结构体temp的指针
temp
本文档预览:3600字符,共3894字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载