#include <stdio.h>
int main()
{
char name[100],a;
float grade[100],b;
int i,j,k,h;
printf("请输入姓名和成绩\n");
printf("(输入完毕后请输入0)\n");
for(i=0;i<100;i++)
{
scanf("%s",&name[i]);
if(name[i]=='0')
{i--;break;}
else scanf("%f\n",&grade[i]);
}
for(k=0;k<i;k++) //排序
{ for(j=i;j>k;j--)
{
if(grade[k]<grade[j])
{
b=grade[k]; /*交换成绩*/
grade[k]=grade[j];
grade[j]=b;
a=name[k]; //交换姓名
name[k]=name[j];
name[j]=a;
}
}
}
printf("学生名次为:\n");
for(h=0;h<=i;h++) //输出名次
printf("第%d名\t%s\n",h+1,name[h]);
return 0;
}
注:如果将最后的printf语句中的%s改为%c则可运行,但是只输出一个字符(如果是中文只输出?),不符合要求。(如下图)