1、国家二级 C+机试(操作题)模拟试卷 452及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 proj1。该工程中包含程序文件 main cpp,其中有类 CDate(“日期 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 原日期: 2005925 更新后的日期: 200641 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include #include using namespace std; class
2、CDate日期类 ERROR*found* protected: CDate(); CDate(int d, int m, int y) ERROR*found* SetDate(int day=d, int month=m, int year=y); ; void Display();显示日期 void SetDate(int day, int month, int year) 设置日期 m_nDay=day; m_nMonth=month; m_nYear=year; private: int m_nDay;日 int m_nNonth;月 int m_nYear;年 ; void CDa
3、te: Display()显示日期 ERROR*found* cout using namespace std; class Array public: Array(unsigned int s) Size=s; num=0; a=new ints; virtual Array() deletea; virtual void add(int e) if(num=size) return; int i=0, j; while(ii; j-) *found* _; *found* _; break; i+; if(i=num) ai=e; num+; ; void fun(Array&a) int
4、 i; for(i=10; i=1; i-) a add(i); for(i=0; i using namespace std; class SortedList 有序数据表类 int len; double*d; public: SortedLi st(int len, double data=NULL); SortedList()deleted; int length()constreturn len; 有序数据表长度 (即元素的个数 ) double getElement (int i) constreturn di; void insert(double data); void sho
5、w () const;显示有序数据表 ; void writeToFile (char *, const SortedList &); main cpp #include“SortedList h“ SortedList: SortedList(intlen, double data): len(1en) d=new double1en; for(int k=0; ki) double t=dm; dm=di; di=t ; void SortedList: insert(double data) *333* *666* void SortedList: show()const 显示有序数据
6、表 for(int i=0; ii; k-) 在数组 d中从 k等于 len到 i做遍历 ddk=dk-1; 把 dk-1赋值给 ddk ddi=data; 把 data赋值给 ddi for(int j=0; ji; J+) 把数组 d从 0到 i做遍历 ddj=dj; 把 dj赋值给 ddj deleted;删 d分配的空间 d=new double1en; 给 d分配长度为 len的空间 for(int index=0; indexlen; +index) 遍历数组 dd从 0到 len dindex=ddindex; 地 ddindex赋值给 dindex deletedd; 删 dd分配的空间 break; 跳出循环 【试题解析】 主要考查考生对插人算法的掌 握,题目要求 insert函数的功能是将一个数据插入到一个有序表中,使得该数据表仍保持有序。可以知道数据表 d是一组有序的数组,那么就采取先比较再插入的步骤完成即可。 要注意动态数组 d的长度是确定的,要添加元素,就要重新分配空间。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1