| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 845 人关注过本帖
标题:排序问题
只看楼主 加入收藏
xiaovs007
Rank: 2
来 自:青岛
等 级:论坛游民
帖 子:48
专家分:88
注 册:2010-5-16
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:10 
排序问题
排序 并记录每个坐标
例如:score[0]=63;
      score[1]=19;
      score[2]=39;
假设score为学生的分数 下标为学生号    怎样输出学生的排名啊?
本例应为:1   3   2
多谢解疑!!!
搜索更多相关主题的帖子: 记录 
2010-06-26 00:38
key8714
Rank: 2
等 级:论坛游民
帖 子:48
专家分:87
注 册:2010-6-9
收藏
得分:0 
不太明白意思
2010-06-26 06:47
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
对数组进行排序后在输出他的下标:

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-26 08:18
xiaovs007
Rank: 2
来 自:青岛
等 级:论坛游民
帖 子:48
专家分:88
注 册:2010-5-16
收藏
得分:0 
回复 楼主 xiaovs007
就是用数组记录每个学生的成绩,然后输出学生的排名。
假设有三个学生  第一个学生的成绩为  78   用score[0]表示
                第二个学生的成绩为  77   用score[1]表示
                第三个学生的成绩为  80   用score[2]表示
那么,第一个学生的名次为 第二名,处理后输出 2;
      第二个学生的名次为 第三名,处理后输出 3;
      第三个学生的名次为 第一名,处理后输出 1;
上次说的不明白,见谅啊!呵呵!
2010-06-26 08:19
xiaovs007
Rank: 2
来 自:青岛
等 级:论坛游民
帖 子:48
专家分:88
注 册:2010-5-16
收藏
得分:0 
回复 3楼 myhnuhai
对数组进行排序之后它的原来的下标就改变了,我把程序贴上来,麻烦您看看!
#include <iostream>
using namespace std;
int main()
{
    int i,j,t;
    int score[5];
    for(i=0;i<5;i++)
        cin>>score[i];
    for(i=0;i<4;i++)
        for(j=i+1;j<5;j++)
        {
            if(score[i]<score[j])
            {
                t=score[i];
                score[i]=score[j];
                score[j]=t;
            }
        }
        //麻烦大哥把最后的输出写出来好吗?
    return 0;
}
2010-06-26 08:43
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
#include <iostream>
using namespace std;
int main()
{
    int i,j,t;
    int score[5];
    for(i=0;i<5;i++)
        cin>>score[i];
    for(i=0;i<4;i++)
        for(j=i+1;j<5;j++)
        {
            if(score[i]<score[j])
            {
                t=score[i];
                score[i]=score[j];
                score[j]=t;
            }
        }
        //输出排名结果
        for(i=0;i<5;i++)
        {
            cout<<" ";
            cout<<score[i];
            cout<<endl;
        }
        return 0;
}
2010-06-26 09:34
rib
Rank: 4
等 级:业余侠客
帖 子:95
专家分:252
注 册:2009-3-30
收藏
得分:0 
用结构体解决
一个存成绩,一个存学号
对成绩排名
然后输出学号

程序代码:
typedef struct student
{
     double score;
     int number;  
}STU;
STU a[LEN];


[ 本帖最后由 rib 于 2010-6-26 09:58 编辑 ]
2010-06-26 09:45
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:0 
再定义一个数组,记入原先的排序;然后用排好的数组逐个与原先的数组中查询相同的数...就可以知道原先这个数的下标了....

学习c语言痛苦!!但是要坚持~~
2010-06-26 10:24
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:5 
lz看看这是不是你想要的:
#include<stdio.h>
main()
{
    int score[5];
    int score2[5];
    int i,j,t;
    for(i=0;i<5;i++)
        scanf("%d",&score[i]);
    for(i=0;i<5;i++)
        score2[i]=score[i];
    for(i=1;i<5;i++)
        for(j=0;j<5-i;j++)
            if(score[j]<score[j+1])
            {
                t=score[j];
                score[j]=score[j+1];
                score[j+1]=t;
            }
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            if(score2[i]==score[j])
                printf("%d ",j+1);
    printf("\n");
}

[ 本帖最后由 kinwyb 于 2010-6-26 10:28 编辑 ]

学习c语言痛苦!!但是要坚持~~
2010-06-26 10:25
rib
Rank: 4
等 级:业余侠客
帖 子:95
专家分:252
注 册:2009-3-30
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define LEN 10

typedef struct student
{
    double score;
    int number;
}STU;

int mycomp(const void *p1, const void *p2);

int main(void)
{
    STU a[LEN];
    int i;
    for (i = 0; i < LEN; i++)
    {
        a[i].number = i + 1;
        printf("输入学号%d学生的成绩:",a[i].number);
        scanf("%lf", &a[i].score);
    }
    qsort(a, LEN, sizeof(STU), mycomp);  //快排
    printf("排名\t学号\t分数\n");
    for (i = 0; i < LEN; i++)
    {
        printf("%d\t%d\t%lf\n",i+1,a[i].number,a[i].score);
    }
    return 0;
}

int mycomp(const void *p1, const void *p2)
{
    const STU * a = (const STU *)p1;
    const STU * b = (const STU *)p2;
    if (a->score < b->score)
    {
        return 1;
    }
    else if (a->score == b->score)
    {
        return 0;
    }
    else
        return -1;
}
2010-06-26 10:44
快速回复:排序问题
数据加载中...
 
   



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

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