| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 734 人关注过本帖
标题:求各位高手帮忙,我在弄一个排序问题。
取消只看楼主 加入收藏
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求各位高手帮忙,我在弄一个排序问题。
因为做课程设计在写一个学生成绩管理程序,现在一个排序问题总是搞不定。现在出现的问题是一次不能彻底的把成绩从高到低排出来,得排好几次才行,我实在不知道是为什么,求各位高手帮帮忙。现在把排序的函数单独调出来,麻烦您看看。

#include<stdio.h>
#define N  100
struct student         
{
    int num;
    char name[20];
    char sex;
    int c;            
    int object_c;
    int java;
};
struct student stu[N]={{11,"aa",'w',59,98,49},{12,"bb",'w',62,95,78},{13,"cc",'w',70,80,50},{14,"dd",'w',77,82,79},{15,"ee",'w',87,83,67},{16,"ff",'w',90,79,80}};
int num_rec=5;


void score_chart1(int a[])               
{     
    struct student t;
    int i,j;
    for(i=0;i<num_rec-1;i++)         
    {         
        for(j=i+1;j<num_rec;j++)            
        {         
            if(a[i]<a[j])                 
            {                 
                t=stu[i];            
                stu[i]=stu[j];                 
                stu[j]=t;                 
            }            
        }         
    }     
   
}
void main()
{
    int i,ch,a[N],yz=1;
    printf("\n\t\t1.根据C成绩排名;\n");
    printf("\t\t2.根据Object_C成绩排名;\n");
    printf("\t\t3.根据Java成绩排名;\n");
    printf("\t\t4.根据学号排名;\n");
    printf("\t\t0.返回主菜单.\n");
    printf("\t\t请选择排名方式:");
    scanf("%d",&ch);
   
    switch(ch)
    {
    case 1 :
        for(i=0;i<num_rec;i++)
            a[i]=stu[i].c;
        score_chart1(a);
        yz=0;   
        break;
    case 2 :
        for(i=0;i<num_rec;i++)
            a[i]=stu[i].object_c;
        score_chart1(a);
        yz=0;   
        break;
    case 3 :
        for(i=0;i<num_rec;i++)
            a[i]=stu[i].java;
        score_chart1(a);
        yz=0;
        break;
    case 4 :
        for(i=0;i<num_rec;i++)
            a[i]=stu[i].num;
        score_chart1(a);
        yz=0;
        break;
    case 0 :
        printf("\n\t\t返回主菜单成功,");
        break;   
    default :        
        printf("\t\t输入错误,请重新输入.\n");
        break;                        
    }
    if(yz==0)        
    {
        printf("Number\tName\tsex\tC\tObject_c\tJava\n");     
        for(i=0;i<num_rec;i++)         
        {         
            printf("%02d\t%s\t%c\t%d\t%d\t\t%d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].c,stu[i].object_c,stu[i].java);         
        }
    }
}


现在这个程序在选择3时运行出来的结果也是不对的,求解。谢谢。






搜索更多相关主题的帖子: 设计 函数 管理程序 include 课程 
2012-03-12 21:15
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
请帮帮忙吧,我实在想不出来了。
2012-03-12 21:25
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
额额、、咋没人呢。。
2012-03-12 22:06
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
看看吧,感激不尽。
2012-03-12 22:06
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 5楼 于祥
就是把结构体数组里边的分数按照大到小的顺序排列出来,但是现在排出来是不对的。我实在是找不出代码有什么错误。
2012-03-13 10:16
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 6楼 xuanze123qaz
感谢灰常。
2012-03-13 10:17
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 5楼 于祥
图片附件: 游客没有浏览图片的权限,请 登录注册

这是选择3之后的运行结果
2012-03-13 10:22
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 10楼 有容就大
求解。
2012-03-13 11:16
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 13楼 有容就大
感觉有点通了,就是说结构体换了,但是a数组的值并没有变化,是这样吗??
我现在把排序函数改成这样:
void score_chart1(int a[])               
{     
    struct student t;
    int i,j,temp;
    for(i=0;i<num_rec-1;i++)         
    {         
        for(j=i+1;j<num_rec;j++)            
        {         
            if(a[i]<a[j])                 
            {                 
               
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
                t=stu[i];            
                stu[i]=stu[j];                 
                stu[j]=t;                 
            }
        }         
    }     
   
}
随便试了一下,好像还行。拜托再看看,不知道还有没有问题???
真的非常感谢。
2012-03-13 12:29
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 14楼 有容就大
哦哦。恩恩,知道了。谢谢啊。
2012-03-13 12:30
快速回复:求各位高手帮忙,我在弄一个排序问题。
数据加载中...
 
   



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

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