}STUDENT;
void m(STUDENT stu[],int n)
{
STUDENT stu1;
int i,j,m[60];
for(i=0;i<n;i++)
m[i]=stu[i].score;
for(i=0;i<n-1;i++)
for (j = 1; j < n; j++)
if (m[i] < m[j])
{
stu1 = stu[i];
stu[i] = stu[j];
stu[j] = stu1;
}
}
int main()
{
STUDENT stu[60];
int i,j,n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", stu[i].name);
scanf("%d", &stu[i].score);
}
m(stu,n);
for (i = 0; i < n; i++)
printf("%d %s %d\n", i + 1, stu[i].name, stu[i].score);
return 0;
}
修改如下,供参考:
#include<stdio.h>
typedef struct student
{
char name[30];
int score;
}STUDENT;
void m2(STUDENT stu[], int n)//修改2
{
STUDENT stu1;
int i, j, m[60];
//for (i = 0; i < n; i++)
// m[i] = stu[i].score;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++) //for (j = 1; j < n; j++)
if (stu[i].score < stu[j].score) //if (m[i] < m[j])
{
stu1 = stu[i];
stu[i] = stu[j];
stu[j] = stu1;
}
}
void m(STUDENT stu[], int n)//修改1
{
STUDENT stu1;
int i, j, m[60],t;
for (i = 0; i < n; i++)
m[i] = stu[i].score;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++) //for (j = 1; j < n; j++)
if (m[i] < m[j])
{
stu1 = stu[i];
stu[i] = stu[j];
stu[j] = stu1;
t = m[i]; //修改
m[i] = m[j]; //修改
m[j] = t; //修改
}
}
int main()
{
STUDENT stu[60];
int i, j, n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", stu[i].name);
scanf("%d", &stu[i].score);
}
m(stu, n);
for (i = 0; i < n; i++)
printf("%d %s %d\n", i + 1, stu[i].name, stu[i].score);
return 0;
}