| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:[求助]哪里排序错了??
取消只看楼主 加入收藏
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
 问题点数:0 回复次数:5 
[求助]哪里排序错了??

//今有8个学生,该学期有5门课程,请用叔祖存储学生学号、成绩,并把计算出来的
//总成绩、名次等也存储入该数组
//作者 HaPpY随心
//日期 2007/10/6
#include <iostream>
struct student
{ int num;
int score[5];
int tnum;
int rank;
};
using namespace std;
int main()
{ struct student a[8];
int i,j,k,tmp;
for(j=0;j<8;j++)
{
a[j].num=j+1;
}

for(j=1;j<=8;j++)
{
cout <<"N0"<<j<<"输入成绩:"<<endl;
for(i=0;i<5;i++)
{
cin >>a[j-1].score[i];
}
for(i=0,a[j-1].tnum=0;i<5;i++)
{
a[j-1].tnum+=a[j-1].score[i];
}
}
cout <<"NO"<<"\t"<<"score1"<<"\t"<<"score2"<<"\t"<<"score3";
cout <<"\t"<<"score4"<<"\t"<<"score5"<<"\t"<<"total"<<endl;
for(j=0;j<8;j++)
{
cout <<a[j].num<<"\t";
for(i=0;i<5;i++)
{
cout <<a[j].score[i]<<"\t";
}
cout <<a[j].tnum<<endl;
}
for(j=0;j<8;j++)
{
for(i=j;i<7;i++)
{
if(a[i].tnum>a[i+1].tnum)
{ k=i;
}
else k=i+1;

}
a[k].rank=j+1;
tmp=a[k].tnum;
a[k].tnum=a[j].tnum;
a[j].tnum=tmp;

}
cout <<"NO"<<"\t"<<"名次"<<endl;
for(j=0;j<8;j++)
{cout <<a[j].num<<"\t"<<a[j].rank<<endl;
}
}

搜索更多相关主题的帖子: 存储 计算 include 总成绩 
2007-10-06 18:38
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(HaPpY随心)[求助]哪里排序错了??

for(j=0;j<8;j++)
{
for(i=j;i<7;i++)
{
if(a[i].tnum>a[i+1].tnum)
{ k=i;
}
else k=i+1;

}
a[k].rank=j+1;
tmp=a[k].tnum;
a[k].tnum=a[j].tnum;
a[j].tnum=tmp;

我是想根据a[I].tnum的比较,先找出最大的,对应的值为j+1(1);a[j].tnum和a[k].tnum交换位置,然后j++;使i从下一个开始
再找出次大的,对应的值为j+1(2);

2007-10-06 21:37
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)for(j=0;j
谢谢BZ来知道
BZ可以对“整个记录做交换”做下说明么;
另外:可以介绍一些其他的排序方法么
2007-10-06 23:23
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)temp=a[k]; a[k]=a[j]; ...
谢谢,BZ指点
小弟刚学C++,以后还请多多指导
2007-10-07 13:48
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)呵呵.我只懂语法的一点皮毛.再说我...

//今有8个学生,该学期有5门课程,请用叔祖存储学生学号、成绩,并把计算出来的
//总成绩、名次等也存储入该数组
//作者 HaPpY随心
//日期 2007/10/6
#include <iostream>
struct student
{ int num;
int score[5];
int tnum;
int rank;
};
using namespace std;
int main()
{ struct student a[8],tmp;
int i,j,k,temp;
for(j=0;j<8;j++)
{
a[j].num=j+1;
}

for(j=1;j<=8;j++)
{
cout <<"N0"<<j<<"输入成绩:"<<endl;
for(i=0;i<5;i++)
{
cin >>a[j-1].score[i];
}
for(i=0,a[j-1].tnum=0;i<5;i++)
{
a[j-1].tnum+=a[j-1].score[i];
}
}
cout <<"NO"<<"\t"<<"score1"<<"\t"<<"score2"<<"\t"<<"score3";
cout <<"\t"<<"score4"<<"\t"<<"score5"<<"\t"<<"total"<<endl;
for(j=0;j<8;j++)
{
cout <<a[j].num<<"\t";
for(i=0;i<5;i++)
{
cout <<a[j].score[i]<<"\t";
}
cout <<a[j].tnum<<endl;
}
for(j=0;j<7;j++)
{
for(i=j,temp=a[i].tnum,k=i;i<7;i++)
{
if(temp>=a[i+1].tnum) continue;
if(temp<a[i+1].tnum)
{
k=i+1;
temp=a[i+1].tnum;
}

}
a[k].rank=j+1;
tmp=a[k];
a[k]=a[j];
a[j]=tmp;

}
a[j].rank=j+1;
cout <<"NO"<<"\t"<<"名次"<<endl;
for(j=0;j<8;j++)
{cout <<a[j].num<<"\t"<<a[j].rank<<endl;
}
}

2007-10-07 14:47
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)呵呵.我只懂语法的一点皮毛.再说我...
总算调试成功了
2007-10-07 14:48
快速回复:[求助]哪里排序错了??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026031 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved