中易网

学生成绩排序 老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。 帮忙看一下程序

答案:3  悬赏:10  
解决时间 2021-01-14 18:28
  • 提问者网友:喧嚣尘世
  • 2021-01-14 01:51
学生成绩排序 老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。 帮忙看一下程序
最佳答案
  • 二级知识专家网友:千杯敬自由
  • 2021-01-14 03:02
你想问什么?是程序出问题了吗?
#include "stdio.h"
#include "string.h"
struct student
{ char name[20];
int score;
}stu[100];
main()
{ struct student *pt,*p[100];
int n,i,j;
scanf("%d",&n);
for (i=0;i { scanf("%[^,],%d", stu[i].name,&stu[i].score);
p[i]=&stu[i];}
for (i=0;i {
for (j=i;j if (p[i]->scorescore)
{ pt=p[i];
p[i]=p[j];
p[j]=pt; }
}
for (i=0;i printf("%s,%d\n",p[i]->name,p[i]->score);
getch();
}追问能解释一下为什么输入改为scanf("%[^,],%d", stu[i].name,&stu[i].score);?
输出时第一行为空,怎么去除?
万分感谢!追答scanf中%[^,]表示遇到逗号时字符串读取结束
因为scanf没有进行缓冲区的清空,导致下一个scanf读入了'\n',将'\n'存入了字符串中,所以在打印的时候显示为换行,可以用getchar()把回车符"吃掉"
#include "stdio.h"
#include "string.h"
struct student
{ char name[20];
int score;
}stu[100];
main()
{ struct student *pt,*p[100];
int n,i,j;
scanf("%d",&n);
getchar();
for (i=0;i { scanf("%[^,],%d", stu[i].name,&stu[i].score);
getchar();
p[i]=&stu[i];}
for (i=0;i {
for (j=i;j if (p[i]->scorescore)
{ pt=p[i];
p[i]=p[j];
p[j]=pt; }
}
for (i=0;i printf("%s,%d\n",p[i]->name,p[i]->score);
getch();
}
全部回答
  • 1楼网友:独钓一江月
  • 2021-01-14 05:21
struct student
{char name[20];
int score;
}stu[5],k;
--定义结构体
for(i=0;i<5;i++)
for(j=5;j>i;j--)
if(stu[j].score>stu[j-1].score)
{
k=stu[j];
stu[j]=stu[j-1];
stu[j-1]=stu[j];
}
for(i=0;i<5i++)
printf("%s %d",stu[i].name,stu[i].score);
追问额,好面熟的百度答案。。。
  • 2楼网友:千杯敬自由
  • 2021-01-14 03:55
020追问神马意思??
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息