输入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;
}
版权声明:本文为m0_62995023原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。