国家二级C++机试(操作题)模拟试卷418
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到s1,s2中。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
∥********error********的下面。
#include
Void main()
{
char*s1;
char s2[102 4];
cout<<“please input a string:”<<end1;
∥********error********
cin.getline(S1,1 02 4);
cout<<“please input a string:”<<end1;
cin.getline(S2,1 02 4);
∥********error********
delete S1;
∥******error******
delete S2;
return;
}
(1)S1=new char[1 02 4];
(2)delete[]s1;
(3)删除“defete s2;”语句
解析:本题是主要是处理程序运行后是否有内存遗漏的问题。对于这类问题主要是根据调试环境中的错误提示以及警告提示进行处理。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。该程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数。程序一边读入整数,一边构造一个以大到小顺序链接的链表,直至输入0时结束。然后顺序输出链表上各表元的整数值。主函数每读入一个整数,就调用函数fun(),函数fun()将还未出现在链表上的整数按从大到小的顺序插入到链表中。为了插入方便,链表在表首有一个辅助表元。
注意:不能修改程序的其他部分,只能修改fun()函数。
#include
class NODE
{
public:
int data;
NODE*nexl;
};
void fun(NODE*list,int x)
{
}
void main()
{
int x;
NODE*head,*P;
/*首先建立只有辅助表元的空链表*/
head=new NODE;
head->next=NULL;
std::couL<<“Enter integers,
end with 0”<<std::endl;
while(1)
{
std::cin>>x;
if( x==0)
break;
fun(head,x);
}
for(P=head一>next;P!=NULL;
p=p一>next)
std::cout<
data<<‘’;
std::cout<<std::end1;
do {
p=head一>next;
delere head;
head=P;
}while(P);
}
NODE*u,*v,*p;
u=list;
v=u一>next;
while(v!=NULL&&Xdata)
//寻找插入的位置
{
u=v;
v=v->next;
}
if(v==NULL ‖X>v一>data)
//判断是否为新的元素
{
p=new NODE;
P一>data=x; //生成新的元素
P一>next=v:
u->next=p; //插入新的元素
}
解析:(1)该程序功能是构造一个以大到小顺序链接的链表。它的解题思路,首先寻找插入的位置,然后判断是否为新元素,最后插入。
(2)从己给部分源程序的main主函数开始入手.核心函数void fun(NODE*list,int x)中的list参数为单链表,x为要插入的数据。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)完成构造函数,设置数组元素的个数为0,请在注释∥********1********之后添加语句。
(2)完成函数AddMember(int n),如果参数n包含在类的数据成员数组中,则返回0,否则把数据写入数组,然后返回1,请在注释∥********2********之后添加语句。
(3)完成函数DelMember(int n),如果变量在数据中,则删除该变量,并且返回1,如果不存在则返回0,请在注释∥********3********之后添加语句。
(4)完成成员函数isInclude(int n)的定义,该函数检查参数n是否在类的数据成员数组elems中,如果在返回1,否则返回0。请在注释∥********4********之后添加语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
#define MAX LENGTH 500
clas s CArray
{
public:
CArray()
{
∥********1********
}
int AddMember(int n)
{
for(int i=0;i<length;i++)
{
∥********2********
if(Array[i]=n)
return 0;
}
Array[length++]=n;
return 1;
}
int DeiMember(int n)
{
int i;
for(i=0;i<length;i++)
{
if(Array[i]==n)
{
break;
}
}
本文档预览:3600字符,共5015字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载