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

//今有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
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
j=7和j=6时,a[k]是多少?
我想问下,你把问题具体说来

You have lots more to work on! Never give up!c language!
2007-10-06 18:43
csmenglei951
Rank: 1
等 级:新手上路
威 望:1
帖 子:77
专家分:0
注 册:2007-9-30
收藏
得分:0 
看的头疼...
2007-10-06 20:31
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
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

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;

}


倚天照海花无数,流水高山心自知。
2007-10-06 22:03
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)for(j=0;j
谢谢BZ来知道
BZ可以对“整个记录做交换”做下说明么;
另外:可以介绍一些其他的排序方法么
2007-10-06 23:23
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
temp=a[k];
a[k]=a[j];
a[j]=temp;

这样就是整个记录做交换了.

倚天照海花无数,流水高山心自知。
2007-10-07 13:26
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
回复:(nuciewth)temp=a[k]; a[k]=a[j]; ...
谢谢,BZ指点
小弟刚学C++,以后还请多多指导
2007-10-07 13:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
呵呵.我只懂语法的一点皮毛.
再说我也不是C++的斑竹.
哈哈.
一起学习.

倚天照海花无数,流水高山心自知。
2007-10-07 13:58
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
快速回复:[求助]哪里排序错了??
数据加载中...
 
   



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

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