繁体   English   中英

无法正确使用“冒泡排序”对该程序进行排序

[英]Can't sort this program using 'Bubble Sort' correctly

我正在尝试根据我将作为输入提供的“GPA”对该程序进行排序,然后以“降序”打印此结果表,以便具有最高“GPA”的学生将在' 1.' position,那么'GPA'第二高的学生将在'2'中的第二个position。 像这样&这就是“GPA”最低的学生如何排在最后。 我已经尝试了很多,但我无法正确排序。 我在这里做错了什么???

#include<stdio.h>
typedef struct
{
   int roll;
   char name[30];
   float gpa;
} student;
int main ()
{
   int i,n;
   scanf("%d",&n);
   student s[n];
   for (i=0; i<n; i++)
   scanf("%d%s%f",&s[i].roll,s[i].name,&s[i].gpa);
   for (i=0; i<n; i++)
   printf("Roll=%d Name=%s GPA=%.2f\n",s[i].roll,s[i].name,s[i].gpa);
   int a[n],j,temp;
   for (i=0; i<n-1; i++)
    {
        for (j=0;j<n-i;j++)
         {
             if(a[i]<a[j])
               {
                  temp=a[i];
                  a[i]=a[j];
                  a[j]=temp;
               }
         }
     }
     printf("Position by Result: ");
     for (i=0; i<n-1; i++)
       {
          printf("%.2f\n",s[i].gpa);
       }
     return 0;
    }

这应该是您需要的解决方案

#include<stdio.h>
typedef struct
{
   int roll;
   char name[30];
   float gpa;
} student;
int main ()
{
   int i,j,n;
   scanf("%d",&n);
   student s[n],temp;
   for (i=0; i<n; i++)
   scanf("%d%s%f",&s[i].roll,s[i].name,&s[i].gpa);
   for (i=0; i<n; i++)
   printf("Roll=%d Name=%s GPA=%.2f\n",s[i].roll,s[i].name,s[i].gpa);
   for (i=0; i<n; i++)
    {
        for (j=i;j<n;j++)
         {
             if(s[i].gpa<s[j].gpa)
               {
                  temp=s[i];
                  s[i]=s[j];
                  s[j]=temp;
               }
         }
     }
     printf("Position by Result: \n");
     for (i=0; i<n; i++)
       {
          printf("%.2f\n",s[i].gpa);
       }
     return 0;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM