永发信息网

c語言難題,超難

答案:3  悬赏:50  手机版
解决时间 2021-07-21 10:52
  • 提问者网友:精神病院里
  • 2021-07-20 13:18

有10个同学的学号和成绩对应如下:

学号 200501 200502 200503 200504 200505 200506 200507 200508 200509 200510

成绩 68 55 58 78 82 67 75 92 66 74

写程序对成绩从大到小排序,然后输出排序后的学号以及对应的成绩,每个学生的学号和成绩占一行。
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-07-20 14:04

可以用结构体来做。


main()
{
struct student
{
int sid;
int sfs;
}stu[10],linshi;
int i,x,y;
for(i=0;i<10;i++)
{
y=i+1;
printf("Please input the %d id and fenshu\n",y);
scanf("%d,%d",&stu[i].sid,&stu[i].sfs);
}
for(i=9;i>=0;i--)
{
for(x=0;x<i;x++)
{
if(stu[x].sfs<stu[x+1].sfs)
{
linshi.sid=stu[x].sid;
linshi.sfs=stu[x].sfs;
stu[x].sid=stu[x+1].sid;
stu[x].sfs=stu[x+1].sfs;
stu[x+1].sid=linshi.sid;
stu[x+1].sfs=linshi.sfs;
}
}
}
for(i=0;i<10;i++)
{
printf("The %d student id is %d and fenshu is %d.\n",i,stu[i].sid,stu[i].sfs);
}
getch();
}


全部回答
  • 1楼网友:慢性怪人
  • 2021-07-20 15:38
这个简单撒
  • 2楼网友:野味小生
  • 2021-07-20 14:49

#include <stdio.h> #include <string.h> void main() { char id[10][10],t[10]; int sum[10],i,j,k;

for(i=0;i<10;i++)//循环输入学号和成绩. 以空格分隔. { scanf("%s%d",id[i],&sum[i]); }

for(i=0;i<=10;i++) { for(j=i+1;j<10;j++) { if(sum[i]<sum[j]) { //交换成绩. k=sum[i]; sum[i]=sum[j]; sum[j]=k; //交换姓名. strcpy(t,id[i]); strcpy(id[i],id[j]); strcpy(id[j],t); } } } printf("排序后:\n"); //为了区分输入和输出.所以加了这句. for(i=0;i<10;i++) { printf("%s %d\n",id[i],sum[i]); }

}

附图:

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯