Description
输入10个学生,每个学生的数据包括学号、姓名、3门课的成绩。定义结构体类型表示学生类型,输入10个学生的数据,
计算每个学生的平均成绩。按平均成绩由高到低输出所有学生信息,成绩相同时按学号从小到大输出。
{
输入格式
10个学生信息,每行一个学生
输入样例
1 aaa 50 60 70
2 bbb 50 50 50
3 ccc 60 70 80
4 ddd 40 40 40
5 eee 70 80 90
6 fff 30 30 30
7 ggg 80 90 100
8 hhh 20 20 20
9 iii 100 100 100
10 jjj 10 10 10
输出样例
9 iii 100 100 100
7 ggg 80 90 100
5 eee 70 80 90
3 ccc 60 70 80
1 aaa 50 60 70
2 bbb 50 50 50
4 ddd 40 40 40
6 fff 30 30 30
8 hhh 20 20 20
10 jjj 10 10 10
}
--------------------------------------------------------------
根据理解和记忆打的代码
# include <stdio.h>
struct date
{
int num;
char name[100];
double score[3], avg, sum;
};
int main()
{
int i, j;
struct date stu[10], tmp;
/*输入学生的所有信息*/
for (i = 0; i < 10; i++)
{
scanf("%d%s%lf%lf%lf", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
/*计算学生平均分*/
for (i = 0; i < 10; i++)
{
stu[i].sum = 0;
for (j = 0; j < 3; j++)
{
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 3;
}
/*按题目的两个要求进行冒泡排序*/
for (i = 0; i < 10 - 1; i++)
{
for (j = 0; j < 10 - 1 - i; j++)
{
if (stu[j].avg < stu[j+1].avg)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if (stu[j].avg == stu[j+1].avg)
{
if (stu[j].num > stu[j+1].num)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
/*循环输出学生类型数组,从而输出每个学生的所有信息*/
for (i = 0; i < 10; i++)
{
printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
return 0;
}
/*
--------------------------------------------------------------便于理解的测试调试程序:
可修改删减后通过OJ
#include <stdio.h>
struct data
{
int num;
char name[100];
float score[3];
float avg, sum;
};
int main()
{
int i,j;
struct data stu[10],tmp;
for(i=0; i<10; i++)
{
printf("请输入学生的学号:");
scanf("%d", &stu[i].num);
printf("请输入学生的姓名:");
scanf("%s", stu[i].name);
stu[i].sum = 0;
for(j = 0; j < 3; j++)
{
printf("请输入学生的第%d门成绩:",j+1);
scanf("%f", &stu[i].score[j]);
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 3;
printf("该名学生的平均成绩为:%.2f", stu[i].avg);
printf("\n\n");
}
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
{
if (stu[j].avg < stu[j+1].avg)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if (stu[j].avg == stu[j+1].avg)
{
if (stu[j].num > stu[j+1].num)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
for(i=0; i<10; i++)
{
printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
return 0;
}
*/
/*
请输入学生的学号:1
请输入学生的姓名:aaa
请输入学生的第1门成绩:50
请输入学生的第2门成绩:60
请输入学生的第3门成绩:70
该名学生的平均成绩为:60.00
请输入学生的学号:2
请输入学生的姓名:bbb
请输入学生的第1门成绩:50
请输入学生的第2门成绩:50
请输入学生的第3门成绩:50
该名学生的平均成绩为:50.00
请输入学生的学号:3
请输入学生的姓名:ccc
请输入学生的第1门成绩:60
请输入学生的第2门成绩:70
请输入学生的第3门成绩:80
该名学生的平均成绩为:70.00
请输入学生的学号:4
请输入学生的姓名:ddd
请输入学生的第1门成绩:40
请输入学生的第2门成绩:40
请输入学生的第3门成绩:40
该名学生的平均成绩为:40.00
请输入学生的学号:5
请输入学生的姓名:eee
请输入学生的第1门成绩:70
请输入学生的第2门成绩:80
请输入学生的第3门成绩:90
该名学生的平均成绩为:80.00
请输入学生的学号:6
请输入学生的姓名:fff
请输入学生的第1门成绩:30
请输入学生的第2门成绩:30
请输入学生的第3门成绩:30
该名学生的平均成绩为:30.00
请输入学生的学号:7
请输入学生的姓名:ggg
请输入学生的第1门成绩:80
请输入学生的第2门成绩:90
请输入学生的第3门成绩:100
该名学生的平均成绩为:90.00
请输入学生的学号:8
请输入学生的姓名:hhh
请输入学生的第1门成绩:20
请输入学生的第2门成绩:20
请输入学生的第3门成绩:20
该名学生的平均成绩为:20.00
请输入学生的学号:9
请输入学生的姓名:iii
请输入学生的第1门成绩:100
请输入学生的第2门成绩:100
请输入学生的第3门成绩:100
该名学生的平均成绩为:100.00
请输入学生的学号:10
请输入学生的姓名:jjj
请输入学生的第1门成绩:10
请输入学生的第2门成绩:10
请输入学生的第3门成绩:10
该名学生的平均成绩为:10.00
9 iii 100 100 100
7 ggg 80 90 100
5 eee 70 80 90
3 ccc 60 70 80
1 aaa 50 60 70
2 bbb 50 50 50
4 ddd 40 40 40
6 fff 30 30 30
8 hhh 20 20 20
10 jjj 10 10 10
*/
评论1