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