思路分析:
先同步输入一行名字和成绩,使用循环,输入四次。
输入完 在一个循环里面使用if 先将成绩进行冒泡法比较,同时将成绩和名字使用第三方变量和字符数组进行相应的转换,else的嵌套进行比较成绩相同的,在成绩相同的里面,比较名字的高低,同时使用第三方变量和字符数组进行相应的转换,最后遍历输出两个数组
注意:此代码并没有判断输入成绩是否在0-100的区间,你们可以自行改善,我就懒得写了。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
char name[n][20];
int score[n];
for(int i=0;i<n;i++)
scanf("%s %d",name[i],&score[i]);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(score[i]<score[j]){
int exchangeScore;
exchangeScore=score[i];
score[i]=score[j];
score[j]=exchangeScore;
char exchangename[20];
strcpy(exchangename,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],exchangename);
}
else if(score[i]==score[j]){
if(strcmp(name[i],name[j])>0)
{ int exchangeScore1;
exchangeScore1=score[i];
score[i]=score[j];
score[j]=exchangeScore1;
char exchangename1[20];
strcpy(exchangename1,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],exchangename1);
}
}
}
for(int i=0;i<n;i++)
printf("%s %d\n",name[i],score[i]);
}