第1个回答 2015-12-23
#include <stdio.h>
int main()
{
struct student
{
int stunum;
char stuname[20];
int stuscore1;
int stuscore2;
int stuscore3;
};
int i=0;
int j=0;
int range=0;
struct student students[100];
struct student temp;
int n=0;
printf("请输入学生总数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %s %d %d %d",&students[i].stunum,students[i].stuname,&students[i].stuscore1,&students[i].stuscore2,&students[i].stuscore3);
}
scanf("%d",&range);
switch(range)
{
case 1:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore1<students[j+1].stuscore1)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
if(students[j].stuscore1==students[j+1].stuscore1)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
}
}
}
for(i=0;i<n;i++)
{
printf("%d %s %d %d %d\n",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 2:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore2<students[j+1].stuscore2)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
if(students[j].stuscore2==students[j+1].stuscore2)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
}
}
}
for(i=0;i<n;i++)
{
printf("%d %s %d %d %d\n",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 3:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore3<students[j+1].stuscore3)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
if(students[j].stuscore3==students[j+1].stuscore3)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}
}
}
}
for(i=0;i<n;i++)
{
printf("%d %s %d %d %d\n",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
}
return 0;
}
第2个回答 2016-01-02
这里是4名学生一门成绩的排序,不过中间还有生日,希望能给你带来点灵感吧!
通过比较,进行交换达到的排序。
源代码如下:
#include <stdio.h>
struct student_record
{
char name[8];
struct birth
{
int year;
int month;
int day;
}date;
int score;
}student[4];
void main()
{
struct student_record student[4];
struct student_record stu;
int i,j;
printf("please input date:\n");
for(i=0;i<4;i++)
scanf("%s%d%d%d%d",student[i].name,&student[i].date.year,
&student[i].date.month,&student[i].date.day,&student[i].score);
printf("OUTPUT:\n");
printf("NAME BIRTH SCORE\n");
for(j=1;j<=3;j++)
for(i=0;i<4-j;i++)
{
if(student[i].score<student[i+1].score)
{
stu=student[i];
student[i]=student[i+1];
student[i+1]=stu;
}
}
for(i=0;i<4;i++)
printf("%s %d,%d,%d %d\n",student[i].name,student[i].date.year,
student[i].date.month,student[i].date.day,student[i].score);
}
第3个回答 推荐于2018-02-27
这里是4名学生一门成绩的排序,不过中间还有生日,希望能给你带来点灵感吧!源代码如下:
#include <stdio.h>
struct student_record
{
char name[8];
struct birth
{
int year;
int month;
int day;
}date;
int score;
}student[4];
void main()
{
struct student_record student[4];
struct student_record stu;
int i,j;
printf("please input date:\n");
for(i=0;i<4;i++)
scanf("%s%d%d%d%d",student[i].name,&student[i].date.year,
&student[i].date.month,&student[i].date.day,&student[i].score);
printf("OUTPUT:\n");
printf("NAME BIRTH SCORE\n");
for(j=1;j<=3;j++)
for(i=0;i<4-j;i++)
{
if(student[i].score<student[i+1].score)
{
stu=student[i];
student[i]=student[i+1];
student[i+1]=stu;
}
}
for(i=0;i<4;i++)
printf("%s %d,%d,%d %d\n",student[i].name,student[i].date.year,
student[i].date.month,student[i].date.day,student[i].score);
}本回答被提问者和网友采纳
第4个回答 2016-01-08
M门课程要先知道M是多少。不然没办法定义结构体。变量多少不知道。