东南大学 08 级 C++(下)上机试卷 A
(考试时间 80 分钟卷面成绩 100 分)
学号 姓名 机位号
说明:首先在 Z 盘建立一个以自己的学号命名的文件夹,用于存放上交的*.CPP
文件,考试结束前根据机房要求,将这个文件夹传送到网络服务器上,注意:提
交时只保留文件夹中的 CPP 文件。
一、改错题 (50 分)
【要求】调试程序,修改其中的语法错误及少量逻辑错误。只能修改、不能增加
或删除整条语句,但可增加少量说明语句和编译预处理指令。
【注意】源程序以“学号 f1.cpp”命名,存入自己学号文件夹。
【题目】以下程序用于构造一个空的数组对象,通过调用插入函数建立按升序排
列的数组,并输出数组内容。
【含错误的源程序】
#include<iostream>
#include<iomanip>
using namespace std;
class Array{
int *p;
int last; //最后一个元素下标
public:
Array(int=20); //创建一定长度的空表,给定长度缺省值为 20
~Array();
void insertOrder(int); //在升序表中插入一个元素,使之仍然升序
void print();
};
void Array::Array(int max){ //错误行
last=-1;
p=new int[]; //初始化为给定长度 //错误行
}
Array::~Array(){delete p[];} //错误行
void print(){ //错误行
for(int i=0;i<=last;i++) cout<<setw(4)<<p[i];
cout<<endl;
}
void Array::insertOrder(){ //将关键字插入到数组中某个位置 //错误行
if(last=-1){last++; p[last]=key;} //错误行
int i=last;
while(i>=0&&key<p[i]){