簡體   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