收藏 分销(赏)

东南大学08级C--(下)上机试卷A及答案解析.doc

上传人:仙人****88 文档编号:7386629 上传时间:2025-01-02 格式:DOC 页数:7 大小:54KB
下载 相关 举报
东南大学08级C--(下)上机试卷A及答案解析.doc_第1页
第1页 / 共7页
东南大学08级C--(下)上机试卷A及答案解析.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
东南大学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]){               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;               a.insertOrder(int t);                        //错误行        }        print();      //输出数组                   //错误行 }   二、编程题(50分) 【注意】源程序以“学号f2.cpp”命名,存入自己学号文件夹。 【题目】以下程序定义了一个整型数组类Array,数组长度为30个元素。数组的初始化数据来源以及程序结束后数组的数据保存都指向工程文件夹下的文本文件”vdata.txt”。即,创建数组对象时,在构造函数中读该取文件获得数据(首次创建对象时文件是打不开的,数组就没有初始化值),当程序结束时,析构函数将数据写入上述文件。 【说明】本程序的执行流程是,创建数组对象并初始化,向数组中添加一些数据。请按以上说明和要求将下面程序补充完整,并调试运行。 #include<iostream>   #include<fstream> 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<<vector;      cout<<"向数组添加3个数:";      for(int i=0;i<3;i++){  //向数组中添加3个数据             cin>>t;             vector.insertAfter(t);           }      cout<<"当前数组内容:"<<endl;      cout<<vector;   }   【提醒】上传的学号文件夹中只需包含f1.cpp、f2.cpp及vdata.txt三个文件即可,其余文件上传前尽可删除。 答案解析: 一.改错题 #include<iostream> #include<iomanip> using namespace std; class Array { int *p; int last; //最后一个元素下标 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; } void Array::print() { //错误行 for(int i=0;i<=last;i++) cout<<setw(4)<<p[i]; cout<<endl; } void Array::insertOrder(int key) { //将关键字插入到数组中某个位置 if(last==-1) { last ++; p[last]=key; } else { int i=last; while(i>=0 && key<p[i] ) { p[i+1]=p[i]; //错误行 i--; } p[i+1]=key; //错误行 last++; } } void main() { Array a; //创建数组 int t; for(int i=0;i<10;i++) { //读入10个数据创建一个升序数 cin>>t; a.insertOrder(t); } a.print(); //输出数组 }    二.编程题 #include<iostream> #include<fstream> 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() { int vv[30]; fstream datafile("d:\\vdata.txt",ios::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<last;i++) { datafile<<v[i]<<'\t'; } datafile.close(); } void Array::insertAfter(int t) { v[last]=t; last++; } ostream& operator<<(ostream &os,Array &a) { for(int i=0;i<a.last;i++) //此处添加代码 { os<<a.v[i]<<'\t'; } return os; } void main() { Array vector; //创建数组 int t; cout<<vector; cout<<"向数组添加3个数:"<<endl; for(int i=0;i<3;i++) { //向数组中添加3个数据 cin>>t; vector.insertAfter(t); } cout<<"当前数组内容:"<<endl; cout<<vector; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服