问答题
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中声明的Array是一个表示数组的类。一个Array对象可以包含多个整型元素。Array的成员说明如下: 成员函数add用于向数组的末尾添加一个元素; 成员函数get用于获取数组中指定位置的元素; 数据成员a表示实际用于存储数据的整型数组; 数据成员size表示数组的容量,数组中的元素个数最多不能超过size; 数据成员num表示当前数组中的元素个数。 SortedArray是Array的派生类,表示有序数组。SortedAr-ray重新定义了Array中的add函数,以确保有序数组中的元。素始终按照升序排列。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: 10,9,8,7,6,5,4,3,2,1, 1,2,3,4,5,6,7,8,9,10, 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#include<iostream>using namespace std;class Array{public: Array(unsigned int s) { Size=s; num=0; a=new int[s]; } virtual—Array(){delete[]a; } virtual void add(int e) { if(num<size){//**********found************ num++; } } int get(unsigned int i)const { if(i<size) return a[i]; return 0 ; }protected: int*a; unsigned int size,num;};class SortedArray:public Array{public://**********found*********** SortedArray(unsigned int S) :________{} virtual void add(int e) { if(num>=Size) return; int i=0,j; while(i<num){ if(e<a[i]){ for(j=num;j>i;j—一){//**********found********** _________; }//**********found********** ______; break; } i++; } if(i==num) a[i]=e; num++; }};void fun(Array&a){ int i; for(i=10;i>=1;i一一){ a.add(i); } for(i=0;i<10;i++){ cout<<a.get(i)<<”,”; } cout<<endl;}int main(){ Array a(10); fun(a); SortedArray sa(10); fun(sa); return 0;}
【正确答案】正确答案:(1)a[num]=e; (2)Array(s) (3)a[j]=a[j—1] (4)a[i]=e
【答案解析】解析:(1)考查的是虚函数virtual void add(int e)的定义,即添加一个整型数e到a[num]中。 (2)主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始化。 (3)因为Sorted_Array类是排序类,所以数组a中的元素要从小到大排序。在if(e