1、东南大学08级C++(下)上机试卷A和答案解析 (考试时间80分钟,卷面成绩100分) 学号 姓名 机位号 说明:首先在Z盘建立一个以自己的学号命名的文件夹,用于存放上交的*.CPP文件,考试结束前根据机房要求,将这个文件夹传送到网络服务器上,注意:提交时只保留文件夹中的CPP文件。 一、改错题 (50分) 【要求】调试程序,修改其中的语法错误及少量逻辑错误。只能修改、不能增加或删除整条语句,但可增加少量说明语句和编译预处理指令。 【注意】源程序以“学号f1.cpp”命名,存入自己学号文件夹。
2、题目】以下程序用于构造一个空的数组对象,通过调用插入函数建立按升序排列的数组,并输出数组内容。
【含错误的源程序】
#include
3、 //在升序表中插入一个元素,使之仍然升序 void print(); }; void Array::Array(int max){ //错误行 last=-1; p=new int[]; //初始化为给定长度 //错误行 } Array::~Array(){delete p[];} //错误行 void print(){
4、 //错误行
for(int i=0;i<=last;i++) cout< 5、){
p[i+1]=p[i]; //错误行
i--;
}
p[i]=key; //错误行
last++;
}
void main(){
Array a(); //创建数组 //错误行
int t;
for(int i=0;i<10;i+ 6、){ //读入10个数据创建一个升序数组
cin>>t;
a.insertOrder(int t); //错误行
}
print(); //输出数组 //错误行
}
二、编程题(50分)
【注意】源程序以“学号f2.cpp”命名,存入自己学号文件夹。
【题目】以下程序定义了一个整型数组类Array,数组长度为30个元素。数组的初始化数据来源以及程序结束后数组的数据保存都指向工程文件夹下的文本文 7、件”vdata.txt”。即,创建数组对象时,在构造函数中读该取文件获得数据(首次创建对象时文件是打不开的,数组就没有初始化值),当程序结束时,析构函数将数据写入上述文件。
【说明】本程序的执行流程是,创建数组对象并初始化,向数组中添加一些数据。请按以上说明和要求将下面程序补充完整,并调试运行。
#include 8、];
int last; //最后一个元素下标
public:
Array(); //创建表,从文件中读取数据进行初始化
~Array(); //数据保存到文件中
void insertAfter(int); //在当前表的最后添加一个元素
friend ostream& operator<<(ostream &, Array &); //用于直接输出数组对象
};
Array::Array(){
//此处添加代码
}
Array::~Array(){
//此处添加代码
}
voi 9、d Array::insertAfter(int t){
last++;
v[last]=t;
}
ostream& operator<<(ostream &os,Array &a){
//此处添加代码
}
void main(){
Array vector; //创建数组
int t;
cout< 10、 vector.insertAfter(t);
}
cout<<"当前数组内容:"< 11、
public:
Array(int=20); //创建一定长度的空表,给定长度缺省值为20
~Array();
void insertOrder(int); //在升序表中插入一个元素,使之仍然升序
void print();
};
Array::Array(int max)
{
last=-1;
p=new int[max]; //初始化为给定长度
}
Array::~Array()
{
delete []p;
} 12、
void Array::print()
{ //错误行
for(int i=0;i<=last;i++)
cout< 13、
if(last==-1)
{
last ++;
p[last]=key;
}
else
{
int i=last;
while(i>=0 && key 14、 //错误行
last++;
}
}
void main()
{
Array a; //创建数组
int t;
for(int i=0;i<10;i++)
{ //读入10个数据创建一个升序数
cin>>t;
a.insertOrder(t);
}
a.print(); // 15、输出数组
}
二.编程题
#include 16、 //创建表,从文件中读取数据进行初始化
~Array(); //数据保存到文件中
void insertAfter(int); //在当前表的最后添加一个元素
friend ostream& operator<<(ostream &, Array &); //用于直接输出数组对象
};
Array::Array()
{
int vv[30];
fstream datafile("d:\\vdata.txt",ios:: 17、in);
if(!datafile==0)
{ last=-1;
for(int i=0;!datafile.eof();i++)
{
datafile>>vv[i];
v[i]=vv[i];
last=last+1;
}
datafile.close();
}
}
Array::~Array()
{
fstream datafile ("d:\\vdata.txt",ios::out);
for(int i=0;i 18、atafile.close();
}
void Array::insertAfter(int t)
{
v[last]=t;
last++;
}
ostream& operator<<(ostream &os,Array &a)
{
for(int i=0;i
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818