C语言 排序问题.有三个同学,分别有三个成绩,将成绩排序,然后按顺序输出同学的名字。求代码

一定要注意,我要的是按成绩大小输出同学的名字,而不是输出成绩。

第1个回答  2012-05-12
给你写了一下,编译 好的,你看看啊
# include <stdio.h>
# include <string.h>
struct student
{
char name[20];
int num;
}stu[3]; // 3个学生

void main( )
{
int i=0,j,box;
char temp[20];
while(i<3)
{
printf("输入第%d个学生的姓名\n",i+1);
scanf("%s",stu[i].name);
printf("输入第%d个学生的成绩\n",i+1);
scanf("%d",&stu[i].num);
i++;
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
if (stu[j+1].num>stu[j].num)
{
strcpy(temp,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,temp);
box=stu[j].num;
stu[j].num=stu[j+1].num;
stu[j+1].num=box;
}
}
printf("按成绩大小排序为\n");

for(i=0;i<3;i++)
printf("%s\n",stu[i].name);
getchar();
getchar();

}
第2个回答  2012-05-12
#include<stdio.h>
struct Student
{
char name[10];
float score;
};
void main()
{
Student a[3]={"zhan",68,"li",78,"sun",89};
for(int i=0;i<3;i++)
printf("%s,%1.0f ",a[i].name,a[i].score);
printf("\n");
for( i=0;i<2;i++)
for(int j=0;j<2-i;j++){
Student temp;
if(a[j].score<a[j+1].score){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for( i=0;i<3;i++)
printf("%s ",a[i].name);
printf("\n");
}本回答被提问者和网友采纳
第3个回答  2012-05-12
#include<stdio.h>
typedef struct student
{
char name[20];
float score;
}stu;
main()
{
stu a[3]={{"zhangsan",95},{"lisi",56},{"wangming",89}};
int i,j;
stu k;
for(i=0;i<2;i++)
for(j=i+1;j<3;j++)
if(a[i].score>a[j].score)
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<3;i++)
printf("%s\t",a[i].name);

}
第4个回答  2012-05-12
用指针就好咯了。。。
相似回答