首页 > 代码库 > 写程序完成输入学生学号,姓名,以及成绩信息,并由高到低排序

写程序完成输入学生学号,姓名,以及成绩信息,并由高到低排序

要求:写程序完成输入学生学号,姓名,以及成绩信息,根据学生成绩由高到低排序。

#include <stdio.h>
#include <string.h>
typedef struct student_score
{
 int id;
 char name[20];
 int score;

}STU;  //定义结构体

int main(int argc, const char *argv[])
{
 int i,j;
 int num;
 STU tmp,stu[100];

 printf("how many students?input the num:");
 scanf("%d",&num);   // 输入学生人数

 for(i=0;i<num;i++)
 {
  printf("plz input the [num:%d]student‘s id:\n",i+1);
  scanf("%d",&stu[i].id);
  puts("plz input the name:");
  scanf("%s",stu[i].name);
  puts("plz input the score:");
  scanf("%d",&stu[i].score);
 }
 /*
 防止输入错误可采用:
 int ret;
 ret=scanf("%d %s %d",&stu[i].id,stu[i].name,stu[i].score);
 if ( ret!=3 )
 printf("input error");
 
 */
 

 printf("============================\n");
 printf("||  ID      name     score\n");
 for(i=0;i<num;i++)
 {
 printf("||  %d        %s       %d    \n",stu[i].id,stu[i].name,stu[i].score);
 }
 for (i=0;i<num;i++)
  for(j=0;j<num-1;j++) //注意后面冒泡排序会出现stu[j+1];
    {     // 如 学生人数为3时 只比较2次。因此循环条件: j<num-1 

   if (stu[j].score<stu[j+1].score)
   {
    tmp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=tmp;
   }
  }
 printf("============================\n");
 for (i=0;i<num;i++)
 {
 printf("||  %d        %s       %d    \n",stu[i].id,stu[i].name,stu[i].score);
 }
 return 0;
}