首页 > 编程语言 > 详细

成绩排序

时间:2016-03-27 15:21:27      阅读:271      评论:0      收藏:0      [点我收藏+]

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
      都按先录入排列在前的规则处理。

   例示:
   jack      70
   peter     96
   Tom       70
   smith     67

   从高到低  成绩            
   peter     96    
   jack      70    
   Tom       70    
   smith     67    

   从低到高

   smith     67  

   Tom       70    
   jack      70    
   peter     96      


输入描述:

输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开



输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

输入例子:
3
0
fang 90
yang 50
ning 70

输出例子:
fang 90
ning 70
yang 50

我的实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item{
    char name[20];
    int score;
};
int main(void){
  int count;
  int sort;
  while(scanf("%d%d",&count,&sort)!=EOF){
      struct Item *students,*stu_copy;
      int i,j;
      students=(struct Item *)malloc(sizeof(struct Item)*count);
      stu_copy=students;
      memset(students,0,sizeof(struct Item)*count);
      for(i=0;i<count;++i)
          scanf("%s%d",students[i].name,&students[i].score);
/*** 插入排序 ***/
      for(i=1;i<count;++i){
         struct Item student=students[i];
         int flag=1;
         for(j=i-1;j>=0&&flag;--j){
             if(sort==0)
            flag=students[j].score<student.score;
        else
            flag=students[j].score>student.score;
        if(flag)
            students[j+1]=students[j];
             }
             if(flag&&j<0)
                 students[j+1]=student;
        else
                 students[j+2]=student;
       }
/*** 插入排序 ***/

    for(i=0;i<count;++i)
        printf("%s %d\n",students[i].name,students[i].score);
    free(stu_copy);
  }
}
知识点:

1,动态分配和释放内存

2,插入排序

感想:

1,一两个月没有做在线编程了,生疏了很多,很多简单的东西需要重新拾起来,所以编程这内力必须要坚持练习才行,不可有废!

2,难道是年龄的问题,还是长时间不用脑袋,脑袋生锈了,不知道为什么一个简单的二层循环我苦苦想了一个小时,卡在那里脑袋都变糊状了,最后放弃坚持做了个饭,又回来才理清楚!真是太可怕了!必须趁年轻抓紧啊!脑袋必须常磨砺,不然锈的严重了,有一天想磨回来都难了!

3,即使一个简单的插入排序,有时候在应用时都可能会十分困难!或许是理解不够透彻,那么透彻的理解,源于不断的灵活运用啊!没啥好说的,这就是沉淀,这就是积累,这就是每个人不断追求的能力!

成绩排序

原文:http://www.cnblogs.com/cq-shihao/p/5325508.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!