1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2.从键盘输入10个学生的以上内容
3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分
5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:
number name math Chinese English average
103 tom 90 90 100 95
101 alice 90 80 70 80
学生成绩单制作,求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qfl_sdu 2021-06-17 18:35关注
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h> struct Student { int nmb; char name[20]; int score[3]; }; //录入数据 void inputinfo(struct Student a[]) { int i; printf("输入10个学生的学号,姓名,三门课的成绩:\n"); for (i = 0;i< 10;i++) { scanf("%d %s %d %d %d",&a[i].nmb,a[i].name,&a[i].score[0],&a[i].score[1],&a[i].score[2]); } } //科目成绩最高的学生信息 void maxinfo(struct Student a[]) { int i; int max1,max2,max3; int index1 = 0,index2 = 0,index3 = 0; max1 = a[0].score[0]; max2 = a[0].score[1]; max3 = a[0].score[2]; for (i = 1;i<10;i++) { if (a[i].score[0] > max1) { max1 = a[i].score[0]; index1 = i; } if (a[i].score[1] > max2) { max2 = a[i].score[1]; index2 = i; } if (a[i].score[2] > max3) { max3 = a[i].score[2]; index3 = i; } } printf("科目1成绩最高的学生:%d\t%s\t%d\n",a[index1].nmb,a[index1].name,a[index1].score[0]); printf("科目2成绩最高的学生:%d\t%s\t%d\n",a[index2].nmb,a[index2].name,a[index2].score[1]); printf("科目3成绩最高的学生:%d\t%s\t%d\n",a[index3].nmb,a[index3].name,a[index3].score[2]); } //平均成绩最高的学生信息 void avginfo(struct Student a[]) { int i = 0; float avg = 0.0; float maxavg = (a[0].score[0] + a[0].score[1]+a[0].score[2])/3.0; int index =0; for (i = 1;i<10;i++) { avg = (a[i].score[0] + a[i].score[1]+a[i].score[2])/3.0; if (avg > maxavg) { maxavg = avg; index = i; } } printf("平均分最高的学生:%d\t%s\t%.2f\n",a[index].nmb,a[index].name,maxavg); } //按平均分从高到低排序 void Sort(struct Student a[]) { int i,j; float avg1,avg2; struct Student tmp; for (i = 0;i< 9;i++) { for (j = 0;j< 9-i;j++) { avg1 = (a[j].score[0] + a[j].score[1]+a[j].score[2])/3.0; avg2 = (a[j+1].score[0] + a[j+1].score[1]+a[j+1].score[2])/3.0; if(avg1 < avg2) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = a[j]; } } } printf("number name math Chinese English average\n"); for (i = 0;i<10;i++) { avg1 = (a[i].score[0] + a[i].score[1]+a[i].score[2])/3.0; printf("%d\t%s\t%d\t%d\t%d\t%.2f\n",a[i].nmb,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],avg1); } } int main() { struct Student a[10]; inputinfo(a); maxinfo(a); avginfo(a); Sort(a); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 BP神经网络控制倒立摆
- ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
- ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
- ¥30 Unity接入微信SDK 无法开启摄像头
- ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
- ¥20 cad图纸,chx-3六轴码垛机器人
- ¥15 移动摄像头专网需要解vlan
- ¥20 access多表提取相同字段数据并合并
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算