试定义一个数组类CArray,声明如下:
class CArray{
int *arr; //数组
int n; //数组元素个数
public:
CArray(); //构造函数
CArray(int a[],int n); //构造函数
CArray(CArray &t); //拷贝构造函数
~CArray();
int Insert(int x); //在数组中插入整数x,保持数组从小到大排序
void Print(); //输出数组
};
在如下主函数中对该类进行测试。
int main() {
int a[] = { 3,6,9 },x;
CArray a1(a, 3),a2(a1);
for (int i = 0; i < 5; i++) {
cin >> x;
a2.Insert(x);
}
a2.Print();
return 0;
}
输入输出示意如下:
1 2 3 4 5
1 2 3 3 4 5 6 9
请在答题窗口录入编写的完整程序。
#include <iostream>
using namespace std;
class CArray {
int *arr; //数组
int n; //数组元素个数
public:
CArray(); //构造函数
CArray(int a[],int n); //构造函数
CArray(CArray &t); //拷贝构造函数
~CArray();
int Insert(int x); //在数组中插入整数x,保持数组从小到大排序
void Print(); //输出数组
};
CArray::CArray() {
arr=NULL;
n=0;
}
CArray::CArray(int a[],int an) {
n=an;
arr=new int[n];
for (int i=0;i<n;i++) arr[i]=a[i];
for (int i=0;i<n-1;i++) {
for (int j=i+1;j<n;j++) {
if (arr[i]>arr[j]) {
int t;
t=arr[i];arr[i]=arr[j];arr[j]=t;
}
}
}
}
CArray::CArray(CArray &t) {
arr=new int[t.n];
n=t.n;
for (int i=0;i<n;i++) arr[i]=t.arr[i];
}
CArray::~CArray() {
delete[] arr;
}
int CArray::Insert(int x) {
int *arr1=new int [n+1];
for (int i=0;i<n;i++) arr1[i]=arr[i];
arr1[n]=x;
delete[] arr;
arr=arr1;
n++;
for (int i=0;i<n-1;i++) {
for (int j=i+1;j<n;j++) {
if (arr[i]>arr[j]) {
int t;
t=arr[i];arr[i]=arr[j];arr[j]=t;
}
}
}
return n;
}
void CArray::Print() {
if (n<=0) {cout<<endl;return;}
if (n==1) {cout<<arr[0]<<endl;return;}
cout<<arr[0];
for (int i=1;i<n;i++) cout<<" "<<arr[i];
cout<<endl;
}
int main() {
int a[] = { 3,6,9 },x;
CArray a1(a, 3),a2(a1);
for (int i = 0; i < 5; i++) {
cin >> x;
a2.Insert(x);
}
a2.Print();
return 0;
}
//输入
//1 2 3 4 5
//输出
//1 2 3 3 4 5 6 9
//