输入5位同学的一组信息,包括学号、姓名(不包含空格)、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
请利用结构体完成该题目
结构体定义:
typedef struct mes
{ int sno;
char sname[20];
float grade1;
float grade2;
float sum;
float avg;
}STUDENT;
输入提示信息: "请输入五位学生的信息\n"
输入提示信息:"学号\t姓名(无空格)\t数学\t计算机\n"
输入数据格式:"%d %s %f %f"
输出提示信息:"学生成绩的排序结果为:\n"
输出数据格式:"学号:%d,姓名:%s,数学成绩:%3.1f,计算机成绩:%3.1f:%3.1f,分 :%3.1f\n"
运行样例1:
请输入五位学生的信息
学号 姓名(无空格) 数学 计算机
111 zhangli 80 89↙
222 wangmeng 77 87↙
333 dahai 60 61↙
112 lihua 75 89↙
211 meimei 90 99↙
学生成绩的排序结果为:
学号:211,姓名:meimei,数学成绩:90.0,计算机成绩:99.0:94.5,分 :189.0
学号:111,姓名:zhangli,数学成绩:80.0,计算机成绩:89.0:84.5,分 :169.0
学号:112,姓名:lihua,数学成绩:75.0,计算机成绩:89.0:82.0,分 :164.0
学号:222,姓名:wangmeng,数学成绩:77.0,计算机成绩:87.0:82.0,分 :164.0
学号:333,姓名:dahai,数学成绩:60.0,计算机成绩:61.0:60.5,分 :121.0
#include <stdio.h>
typedef struct mes
{
int sno;
char sname[20];
float grade1;
float grade2;
float sum;
float avg;
} STUDENT; //定义结构体
int main()
{
int i, j, k;
STUDENT temp, student [5];
printf("请输入五位学生的信息\n");
printf("学号\t姓名(无空格)\t数学\t计算机\n");
for (i = 0; i < 5; i++)
{
scanf("%d %s %f %f", &student[i].sno, student[i].sname, &student[i].grade1, &student[i].grade2);
student[i].sum = student[
i].grade1 + student[i].grade2;
student[i].avg = student[i].sum / 2;
}
for (i = 0; i < 4; i++)
{
k = i;
for (j = i + 1; j < 5; j++)
if (student[k].sum < student[j].sum)
k = j;
temp = student[k];
student[k] = student[i];
student[i] = temp;
}
printf("学生成绩的排序结果为:\n");
for (i = 0; i < 5; i++)
{
printf("学号:%d,姓名:%s,数学成绩:%3.1f,计算机成绩:%3.1f:%3.1f,分 :%3.1f\n", student[i].sno, student[i].sname, student[i].grade1
, student[i].grade2, student[i].avg, student[i].sum);
} //显示五位同学的信息
return 0;
}