发布网友 发布时间:2022-04-20 11:25
共1个回答
热心网友 时间:2023-09-13 00:31
两个地方存在问题
1、”scanf("%s,%f",name[i],&score[i]); “这句会把包括输入的‘,’及第一个空格前的所有输入都当做字符串传给了name[i],导致成绩输入不到score[i]中;程序修改后你需要像”aaa 90.7“这样输入。
2、排序算法有点小问题,而且效率较低(因为你再输入一个成绩时,原来数组中的成绩已经是排好序的,所以只需要找到准确的位置把当前输入的值插入即可)。
你的程序修改如下即可:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define NUM 5
void main()
{
int i,j;
char name[NUM][5],stmp[5];
float score[NUM],t;
printf("请输入姓名和成绩:\n");
for(i=0;i<NUM;i++)
{
scanf("%s%f",name[i],&score[i]); /*输入时名字和成绩之间一定要有空格*/
for(j=0;j<i;j++)
{
if(score[i]>score[j])
{
t=score[i];
score[i]=score[j];
score[j]=t;
strcpy(stmp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],stmp);
}
}
}
printf("排序为:\n");
for(i=0;i<NUM;i++)
{
printf("%-10s%f\n",name[i],score[i]);
}
system("pause");
}