[英]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.