求学快递网是国内领先的B2M2C教育培训网上信息平台!

首页 | 分站加盟 | 课程发布 | 最新课程 | 最新机构 | 培训专题 | 全国分站 | 帮助中心

计算机等级考试_计算机等级考试报名_计算机考试成绩查询_求学快递网

计算机等级考试一步到位
您的位置:求学快递网 > 计算机等级考试 > 计算机二级 > 每日一练 > 2017河南计算机等级考试二级C++ 程序解析1 - 正文内容

2017河南计算机等级考试二级C++ 程序解析1

2017河南计算机等级考试二级C++ 程序解析1

联 系 方 式 : 0 3 7 1 - 5 8 5 3 5 5 2 5

微     信 : 1 5 7 3 6 9 1 0 2 1 7

Q     Q : 2 4 2 4 1 9 8 9 1 7


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

int i; 
cout<<"元素个数:"; 
cin>>s.n; 
for(i=0;i<S;I++) 

cout<<"输入第"<<i+1<<"个数据:"; 
cin>>s.A[i]; 


void process::insertsort(Sample &s) // 插入排序 来源:www.examda.com

int i,j,temp; 
for(i=1;i<S.N;I++) 

temp=s.A[i]; 
j=i-1; 
while(temp<S.A[J]) 

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<S;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;i<S.N;I++) 
for(j=s.n-1;j>=i+1;j--) 
if(s.A[j]<S.A[J-1]) 

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<H) 
{ temp=s.A[l]; 
do 

while(j>i&&s.A[j]>=temp) 
j--; 
if(i<J) 

s.A[i]=s.A[j]; 
i++; 

while(i<J&&S.A[I]<=TEMP) 
i++; 
if(i<J) 

s.A[j]=s.A[i]; 
j--; 

}while(i<J); 
s.A[i]=temp; 
qsort(s,l,j-1); 
qsort(s,j+1,h); 


void process::selectsort(Sample &s) // 选择排序 

int i,j,k,temp; 
for(i=0;i<S.N;I++) 

k=i; 
for(j=i+1;j<=s.n-1;j++) 
if(s.A[j]<S.A[K]) 
k=j; 
temp=s.A[i]; 
s.A[i]=s.A[k]; 
s.A[k]=temp; 


void process::disp(Sample &s) 

for(int i=0;i<S.N;I++) 
cout<<S.A[I]<<" 
p.disp(s); 
cout<<"0:插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序 其它退出"<<ENDL; 
cout<<"选择排序方法:"; 
cin>>sel; 
switch(sel) 

case 0: 
p.insertsort(s); 
cout<<"插入排序结果:"; 
break; 
case 1: 
p.shellsort(s); 
cout<<"希尔排序结果:"; 
break; 
case 2: 
p.bubblesort(s); 
cout<<"冒泡排序结果:"; 
break; 
case 3: 
p.quicksort(s); 
cout<<"快速排序结果:"; 
break; 
case 4: 
p.selectsort(s); 
cout<<"选择排序结果:"; 
break; 

p.disp(s); 


本程序的执行结果如下: 
元素个数:8 
输入第1个数据: 1 
输入第2个数据: 6 
输入第3个数据: 5 
输入第4个数据: 3 
输入第5个数据: 4 
输入第6个数据: 8 
输入第7个数据: 2 
输入第8个数据: 7 
原来序列: 1 6 5 3 4 8 2 7 来源:www.examda.com
0:插入排序 1:希尔排序 2:冒泡排序 3:快速排序 4:选择排序 其它退出 
选择排序方法: 1 
希尔排序结果: 1 2 3 4 5 6 7 8 



联 系 方 式 : 0 3 7 1 - 5 8 5 3 5 5 2 5

微     信 : 1 5 7 3 6 9 1 0 2 1 7

Q     Q : 2 4 2 4 1 9 8 9 1 7


相关推荐

计算机等级考试最新机试技巧
计算机等级考试高效利用技巧

最新计算机资讯

热点专题

计算机等级考试经验技巧分享

关于本站  诚征英才  广告服务  招生服务  免责声明  分站加盟  VIP会员  联系我们  网站地图  网站记事

版权所有 CopyRight 2008-2017 粤ICP备14009694号 www.studyems.com, Inc. All Rights Reserved
违法和不良信息举报邮箱:2881796407@qq.com 举报电话: