东南大学08级C++(下)上机试卷A和答案解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学08级C++(下)上机试卷A和答案解析
(考试时间80分钟,卷面成绩100分)
学号姓名机位
号
说明:首先在Z盘建立一个以自己的学号命名的文件夹,用于存放上交的*.CPP 文件,考试结束前根据机房要求,将这个文件夹传送到网络服务器上,注意:提交时只保留文件夹中的CPP文件。
一、改错题(50分)
;
【要求】调试程序,修改其中的语法错误及少量逻辑错误。只能修改、不能增加或删除整条语句,但可增加少量说明语句和编译预处理指令。
【注意】源程序以“学号”命名,存入自己学号文件夹。
【题目】以下程序用于构造一个空的数组对象,通过调用插入函数建立按升序排列的数组,并输出数组内容。
【含错误的源程序】
#include
#include
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< \ cout< } void Array::insertOrder(){ //将关键字插入到数组中某个位 置//错误行 if(last=-1){last++; p[last]=key;} //错误行 int i=last; while(i>=0&&key p[i+1]=p[i]; //错误行 i--; } p[i]=key; //错误行 last++; } void main(){ Array a(); //创建数 组//错误行 int t; for(int i=0;i<10;i++){ //读入10个数据创建一个升序数组! cin>>t; (int t); //错误行 } print(); //输出数 组//错误行 } 二、编程题(50分) 【注意】源程序以“学号”命名,存入自己学号文件夹。 ! 【题目】以下程序定义了一个整型数组类Array,数组长度为30个元素。数组的初始化数据来源以及程序结束后数组的数据保存都指向工程文件夹下的文本 文件””。即,创建数组对象时,在构造函数中读该取文件获得数据(首次创建对象时文件是打不开的,数组就没有初始化值),当程序结束时,析构函数将数据写入上述文件。 【说明】本程序的执行流程是,创建数组对象并初始化,向数组中添加一些数据。请按以上说明和要求将下面程序补充完整,并调试运行。 #include #include using namespace std; class Array; ostream& operator<<(ostream &os,Array &a); class Array{ | int v[30]; int last; //最后一个元素下标 public: Array(); //创建表,从文件中读取数据进行初始化 ~Array(); //数据保存到文件中 void insertAfter(int); //在当前表的最后添加一个元素 friend ostream& operator<<(ostream &, Array &); //用于直接输出数组对象 }; > Array::Array(){ //此处添加代码 } Array::~Array(){ //此处添加代码 } void Array::insertAfter(int t){ ` last++; v[last]=t; } ostream& operator<<(ostream &os,Array &a){ //此处添加代码 } void main(){ Array vector; //创建数组 | int t; cout< cout<<"向数组添加3个数:"; for(int i=0;i<3;i++){ //向数组中添加3个数据 cin>>t; (t); } cout<<"当前数组内容:"< | cout< } 【提醒】上传的学号文件夹中只需包含、及三个文件即可,其余文件上传前尽可删除。 答案解析: 一.改错题 ! #include #include using namespace std; class Array { int *p; int last; //最后一个元素下标 public: … Array(int=20); //创建一定长度的空表,给定长度缺省值为20 ~Array(); void insertOrder(int); //在升序表中插入一个元素,使之仍然升序 void print(); }; Array::Array(int max) { —