YaYa很开心 2022-06-01 12:21 采纳率: 81.3%
浏览 41
已结题

结构体与共同体——成绩排名

麻烦帮我看见哪里有问题,我一直找不出来,有的测试点一直过不了

定义结构体struct stu,编写成绩排名函数:void sort(struct stu *ps,int n),对结构体数组按成绩排名。 程序功能为读入整数N(N<100),再读入N个学生的学号(整型)和成绩(实数)。按样例输出排名。

输出格式:

第一列是名次,注意并列情况;第二列是学号,第三列是成绩(2位小数)。
输入样例:

5
101 99
102 100
103 50
104 80
105 99
输出样例:

1 102 100.00
2 101 99.00
2 105 99.00
4 104 80.00
5 103 50.00


#include <stdio.h>
struct stu
{
  int num;
  double grade;
};
void sort(struct stu *ps,int n)
{
   int i,j,t,m;
   for(i=0;i<n;i++){
       scanf("%d %lf",&ps[i].num,&ps[i].grade);
   }
   for(i=0;i<n;i++){
       for(j=i;j<n-i-1;j++){
           if(ps[j].grade<ps[j+1].grade){
              t=ps[j].grade;
              ps[j].grade=ps[j+1].grade;
              ps[j+1].grade=t;
              m=ps[j].num;
              ps[j].num=ps[j+1].num;
              ps[j+1].num=m;
           }
       }
   }
   int k=1,p=1;
   for(i=0;i<n;i++){
        if(ps[i-1].grade!=ps[i].grade){
            printf("%d %d %.2f\n",p,ps[i].num,ps[i].grade);
            k=p;
            p++;
        }else{
            printf("%d %d %.2f\n",k,ps[i].num,ps[i].grade);
            p++;
        }
   }
}
int main()
{
    int n;
    scanf("%d",&n);
    struct stu p[100];
    sort(p,n);
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 正。44 2022-06-01 13:39
    关注

    冒泡排序第二个循环应该是j从0开始,j<n-1 ,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日