有10个同学的学号和成绩对应如下:
学号 200501 200502 200503 200504 200505 200506 200507 200508 200509 200510
成绩 68 55 58 78 82 67 75 92 66 74
写程序对成绩从大到小排序,然后输出排序后的学号以及对应的成绩,每个学生的学号和成绩占一行。有10个同学的学号和成绩对应如下:
学号 200501 200502 200503 200504 200505 200506 200507 200508 200509 200510
成绩 68 55 58 78 82 67 75 92 66 74
写程序对成绩从大到小排序,然后输出排序后的学号以及对应的成绩,每个学生的学号和成绩占一行。可以用结构体来做。
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();
}
#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]); }
}
附图: