代码:
#include <stdio.h>
int main()
{
int m,t,f;
scanf("%d",&m);
struct information{
char name;
int score;
};
struct information a[20];
for(int i=0;i<m;i++)
{
scanf("%c",&a[i].name);
scanf("%d",&a[i].score);
for (int i=0;i<m-1;i++)
{
for(int j=0;j<m-1;j++)
{
if (a[j].score<a[j+1].score)
{
t=a[j+1].score;
a[j+1].score=a[j].score;
a[j].score=t;
f=a[j+1].name;
a[j+1].name=a[j].name;
a[j].name=f;
}
}
}
for(int t=0;t<m;t++)
printf("%s %d\n",a[t].name,a[t].score);
}
return 0;
}
数据:4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
#include <stdio.h>
#include <string.h>
struct information {
char name[100];
int score;
};
int main()
{
int m, t;
char f[100];
scanf("%d", &m);
struct information a[20];
for (int i = 0; i < m; i++)
{
scanf("%s", &a[i].name);
scanf("%d", &a[i].score);
}
for (int i = 0; i < m - 1; i++)
{
for (int j = 0; j < m - 1; j++)
{
if (a[j].score < a[j + 1].score)
{
t = a[j + 1].score;
a[j + 1].score = a[j].score;
a[j].score = t;
strcpy(f, a[j + 1].name);
strcpy(a[j + 1].name, a[j].name);
strcpy(a[j].name, f);
}
}
}
for (int t = 0; t < m; t++)
printf("%s %d\n", a[t].name, a[t].score);
return 0;
}
因为
for(int i=0;i<m;i++)
和它里面的
for (int i=0;i<m-1;i++)
变量都用的是i
嵌套循环的变量不能相同,否则容易混淆