| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:这个问题不是很菜
只看楼主 加入收藏
河马拔河
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2011-3-21
结帖率:77.78%
收藏
已结贴  问题点数:50 回复次数:6 
这个问题不是很菜
今天老师出了个问题,遇到一个瓶颈。
问题是将学生的成绩排序,然后输出所有学生的名字。
排序很简单,我不能解决的是排序后会破坏以前的数组对应的值,感性些就是这样。
a[1]=4 a[2]=6 a[3]=1 a[4]=9
排序后角标对应的数字发生变化,在输出时学号与名次的对应不知道怎么算。
望各位指点一二
搜索更多相关主题的帖子: 就是这样 名字 
2011-04-18 19:45
帅的让人抽
Rank: 4
来 自:安徽
等 级:业余侠客
帖 子:94
专家分:224
注 册:2010-9-30
收藏
得分:10 
用结构体做,我帮你写了一个……
程序代码:
#include<stdio.h>
#define  M   500
//定义结构体 
struct student
{int   student_num;

 int  grade;
}; 

//按学生的成绩对学生进行排序,由高分到低分
void bubblesort(struct student list[],int last)
{struct student  temp;

 for(int current=0;current<last;current++)
    

 {for(int walk=last-1;walk>current;walk--)

 {
     if(list[walk].grade>list[walk-1].grade)
    {
         temp=list[walk];
        list[walk]=list[walk-1];
        list[walk-1]=temp;
    }
}

}
return;

}  //bubblesort

int main()
{ //local declaration
 int  num; 

 int i;

 struct student  student_arr[M];


 //statements
 scanf("%d",&num);  //学生的个数
 for(i=0;i<num;i++)
     scanf("%d%d",&student_arr[i].student_num,&student_arr[i].grade);   //输入学生的学号和学生的成绩
 

 bubblesort(student_arr,num);    //排序


 for(i=0;i<num;i++)
     printf("%d\n",student_arr[i].student_num);

 return  0;
}   //main


樱花下落的速度依然是秒速五厘米,即使发了一千次短信,
心与心之间也只能靠近一厘米……
2011-04-18 20:04
河马拔河
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2011-3-21
收藏
得分:0 
回复 2楼 帅的让人抽
没学过结构体,我慢慢理解理解。
2011-04-18 20:22
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:30 
程序代码:
#include<stdio.h>

int main()
{
    int a[50],n;        
    printf("班级人数:\n");
    scanf("%d",&n);
    printf("依次按学号输入成绩:\n");
    int i;
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    int flag;
    while(1)
    {
        flag=-1;       //<----flag保存最大值
        int s=-1;      //<----s保存最大值的下标
        int j;
        for(j=1;j<=n;j++)
        {
             if(a[j]>flag)
             {
                 flag = a[j];
                 s = j;
             }
        }
        if(flag == -1) break;
        a[s] = -1;     //<-----当选出最大值后,将其置为-1
        printf("%d号成绩%d.\n",s,flag);
    }
    system("pause");
    return 0;
}
       
竟然Lz不会结构体,我弄了个数组


我的地盘
2011-04-22 16:13
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
这种题用结构数组比较合适。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-22 16:20
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
不是很菜 是很基础哦i

                                         
===========深入<----------------->浅出============
2011-04-22 18:05
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:3 
楼主刚学c吧,还没学到结构体

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-04-22 18:16
快速回复:这个问题不是很菜
数据加载中...
 
   



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

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