c语言 选修某课程学生共有10人,按成绩高低顺序输出学生名单,按照比较法排序。 我写个程序,不知为啥不对

2025-04-24 15:12:36
推荐回答(1个)
回答1:

#include//c++标准输入输出
#include
using namespace std;
void main()
{
int i,j;
char name[10][10],stmp[10];
float score[10],temp;
int n;
printf("请输入学生人数");
cout< cin>>n; // 控制输入
printf("请输入姓名和成绩:\n");
for(i=0;i {
scanf("%s%f",name[i],&score[i]);
}
for(i=n-1;i>0;i--)
for(j=0;j {
if(score[i]>score[j])
{
temp=score[i];
score[i]=score[j];
score[j]=temp;
strcpy(stmp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],stmp);
}
}
printf("排序为:\n");
for(i=0;i {
printf("%-10s%f\n",name[i],score[i]);
}
system("pause");
}

经过修改测试正确;
你的程序问题有两点
1, 输入的时候没有下标索引(i没有初始化), 所以读入数据时找不到内存
2.写程序要注意格式, 注意缩进, 要有个好编程习惯
补充:
我把你的程序 加了一个控制输入 n 应为输入10个人实在是太长了(不方便测试,打起来麻烦), 改了之后, 你想输入几个人的信息就可以用n来控制。