二级模拟试题:C 习题与解析(友元-05)

文章作者 100test 发表时间 2007:03:10 16:43:03
来源 100Test.Com百考试题网


05.设计一个类Sample,它有两个私有成员A[]和n(A中元素个数),将对A[]中数据进行各种排序的函数放入到一个友元类process中。
解:
process类不包含任何数据成员,包含的公共成员函数如下:
getdata(Sample &.s). 用于获取对象s的数据
insertsort(Sample &.s). 用于进行插入排序
shellsort(Sample &.s). 用于进行希尔排序
bubblesort(Sample &.s). 用于进行冒泡排序
quicksort(Sample &.s). 用于进行快速排序
0selectsort(Sample &.s). 用于进行选择排序
disp(Sample &.s). 用于输出数据

本题程序如下:
#include
#define Max 100
class Sample
{
int A[Max].
int n.
friend class process.
public:
Sample(){n=0.}
}.
class process
{
void qsort(Sample &.s,int l,int h).
// 私有成员,由quicksort()成员调用
public:
void getdata(Sample &.s).
void insertsort(Sample &.s).
void shellsort(Sample &.s).
void bubblesort(Sample &.s).
void quicksort(Sample &.s).
void 0selectsort(Sample &.s).
void disp(Sample &.s).
}.
void process::getdata(Sample &.s)
{
int i.
cout<<"元素个数:".
cin>>s.n.
for(i=0.i{
cout<<"输入第"<cin>>s.A[i].
}
}
void process::insertsort(Sample &.s) // 插入排序 来源:www.examda.com
{
int i,j,temp.
for(i=1.i{
temp=s.A[i].
j=i-1.
while(temp{
s.A[j 1]=s.A[j].
j--.
}
s.A[j 1]=temp.
}
}
void process::shellsort(Sample &.s) // 希尔排序
{
int i,j,gap,temp.
gap=s.n/2.
while(gap>0)
{
for(i=gap.i{
j=i-gap.
while(j>=gap)
if(s.A[j]>s.A[j gap])
{
temp=s.A[j].
s.A[j]=s.A[j gap].
s.A[j gap]=temp.
j=j-gap.
}
else j=0.
}
gap=gap/2.
}
}
void process::bubblesort(Sample &.s) // 冒泡排序
{
int i,j,temp.
for(i=0.ifor(j=s.n-1.j>=i 1.j--)
if(s.A[j]{
temp=s.A[j].
s.a[j]=s.A[j-1].
s.A[j-1]=temp.
}
}
void process::quicksort(Sample &.s) // 快速排序
{
qsort(s,0,s.n-1).
}
void process::qsort(Sample &.s,int l,int h)
{
int i=l,j=h,temp.
if(l{ temp=s.A[l].
do
{
while(j>i&.&.s.A[j]>=temp)
j--.
if(i{
s.A[i]=s.A[j].
i .
}
while(ii .
if(i{
s.A[j]=s.A[i].
j--.
}
}while(is.A[i]=temp.
qsort(s,l,j-1).
qsort(s,j 1,h).

}
}


相关文章


公共基础知识总结之第四章数据库系统
精选二级C 练习试题
公共基础知识总结之第二章程序设计基础
C++练习题及解答----练习题(一)
二级模拟试题:C 习题与解析(友元-05)
公共基础知识总结之第三章软件工程基础
二级模拟试题:C 习题与解析(友元-02)
计算机等级考试二级公共基础知识(06年考试必备)(一)
公共基础知识总结之第一章数据结构与算法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛