提示:可定义二维字符数组char name[5][10]存放5位学生姓名,float score[5]存放学生成绩,其中:
name[0],score[0]存放第1个学生姓名和成绩
name[1],score[1]存放第2个学生姓名和成绩
……
name[4],score[4]存放第5个学生姓名和成绩)
感觉你这样的题目,不应该用两个数组来保存。用结构体比较好。
把姓名和成绩放在一起,当进行交换时,姓名和成绩就能够跟着一起进行交换。
#include<stdio.h>
#include <stdlib.h>
typedef struct ln
{
char name[20];
float score;
} Stem;
int main()
{
Stem student[20], temp;
int i, j, n;
i=0;
while(scanf("%s %f", student[i].name, &student[i].score)==2)
{
i++;
}
n=i;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-1-i; j++)
{
if(student[j].score<student[j+1].score)
{
temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
}
}
printf("\n\n姓名\t\t\t成绩\n");
for(i=0; i<n; i++)
{
printf("%-25s%.2f\n", student[i].name, student[i].score);
}
}
本回答被网友采纳