题2
//-------------------------------------------------------------------------
//test2.cpp
//
//试题2
//
// 1、将下列程序分离类定义和主函数,改成多文件结构;
// 2、主函数使用类的方式采取包含类定义的头文件的方法;
// 3、按上述要求完成后,编译运行程序并写出运行结果。
//
//要求(xxxxxxxxx为考生准考证号,其它内容见文件"上机试题及考试说明.txt"):
// 1、分离后主函数所在的源程序文件名称必须为xxxxxxxxxmain.cpp
// 2、分离后类头文件名为xxxxxxxxx.h
// 3、分离后类实现文件名为xxxxxxxxx.cpp
// 4、将以上三个文件保存在目录(文件夹)D:\ooptest\xxxxxxxxx\
//
//-------------------------------------------------------------------------
#include<iostream.h>
#include<stdlib.h>
class Array
{
int * a;
int n;
public:
Array():a(NULL),n(0){}
Array(int aa[],int len);
int Length(){return n;}
int MaxValue();
void sort();//按升序排列数组a中的n个元素,此为函数原形,定义在类外
void Output();
};
Array::Array(int aa[],int len)
{
if(len<=0){
cerr<<"n of value is invalid!"<<endl;
exit(1);
}
n=len;
a=aa;
}
int Array::MaxValue()
{
if(n==0){
cerr<<"array a is empty!"<<endl;
exit(1);
}
int x=a[0];
for(int i=1;i<n;i++)
if(a[i]>x) x=a[i];
return x;
}
void Array::sort()
{
for(int i=1;i<=n-1;i++)
{
int k=i-1;
for(int j=i;j<=n-1;j++)
if(a[j]<a[k]) k=j;
if(k!=i-1){
int x=a[i-1];
a[i-1]=a[k];
a[k]=x;
}
}
}
void Array::Output()
{
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<endl;
}
void main()
{
int arr[]={50,24,67,82,44,69};//定义数组arr并初始化
Array r1,r2(arr,6); //定义数组类对象r1和r2
cout<<"r1.Length()="<<r1.Length()<<endl;//输出r1中的数组长度
cout<<"r2.Length()="<<r2.Length()<<endl;//输出r2中的数组长度
r1=r2;
cout<<"before sorting r2.a:";r2.Output();
r2.sort(); //对r2中的数组排序
cout<<"after sorting r2.a:";r2.Output();//输出排序后r2中的数组值
cout<<"r1.a:";r1.Output();//输出r1中的数组值
cout<<"r1.Length()="<<r1.Length()<<endl;//输出r1中的数组长度
cout<<"r1.MaxValue()="<<r1.MaxValue()<<endl;
}