永发信息网

用结构体完成N个学生M名课程的成绩排序 用C语言编写

答案:5  悬赏:40  手机版
解决时间 2021-04-28 05:34
  • 提问者网友:像風在裏
  • 2021-04-28 00:15
用结构体完成N个学生M名课程的成绩排序 用C语言编写
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-04-28 01:39
#include 


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("请输入学生总数:
");
scanf("%d",&n);

for(i=0;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 {
for(j=0;j {
if(students[j].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 {
printf("%d %s %d %d %d
",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 2:
{
for(i=0;i {
for(j=0;j {
if(students[j].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 {
printf("%d %s %d %d %d
",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 3:
{
for(i=0;i {
for(j=0;j {
if(students[j].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 {
printf("%d %s %d %d %d
",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
}
return 0;
}
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-04-28 06:07
#include 

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("请输入学生总数: ");
scanf("%d",&n);

for(i=0;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 {
for(j=0;j{
if(students[j].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 {
printf("%d %s %d %d %d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 2:
{
for(i=0;i {
for(j=0;j{
if(students[j].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 {
printf("%d %s %d %d %d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case 3:
{
for(i=0;i {
for(j=0;j{
if(students[j].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 {
printf("%d %s %d %d %d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
}
return 0;
}
  • 2楼网友:患得患失的劫
  • 2021-04-28 04:46
这里是4名学生一门成绩的排序,不过中间还有生日,希望能给你带来点灵感吧!
通过比较,进行交换达到的排序。
源代码如下:
#include
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 {
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楼网友:胯下狙击手
  • 2021-04-28 03:18
M门课程要先知道M是多少。不然没办法定义结构体。变量多少不知道。
  • 4楼网友:洎扰庸人
  • 2021-04-28 01:52
这里是4名学生一门成绩的排序,不过中间还有生日,希望能给你带来点灵感吧!源代码如下:
#include
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 {
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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯