(4)有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
4条回答 默认 最新
- qzjhjxj 2021-12-22 21:48关注
获得1.30元问题酬金 供参考:
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define N 10 //学生人数 #define LEN sizeof(struct student) typedef struct student { int No; //学号 char name[21]; //姓名 float score1, score2, score3, aver;//成绩 struct student* next; }STU; void input_info(STU** head, int n)//输入10个学生数据 { int i; STU* p, * pt = (*head); printf("学号 姓名 成绩1 成绩2 成绩3\n"); for (i = 0; i < n; i++) { p = (struct student*)malloc(LEN); p->next = NULL; scanf("%d %s %f %f %f", &p->No, p->name, &p->score1, &p->score2, &p->score3); p->aver = (p->score1 + p->score2 + p->score3) / 3; if (i == 0) (*head) = p; else pt->next = p; pt = p; } } void output_score_aver(STU* head)//打印出3门课的总平均成绩,以及最高分的学生的数据 { //(包括学号、姓名、3门课成绩、平均分数) int i=0; float avg[3] = { 0 }, max1 = 0, max2 = 0, max3 = 0; STU* maxp[3] = { 0 }, * p = head; while (p) { if (p->score1 > max1) { max1 = p->score1; maxp[0] = p; } if (p->score2 > max2) { max2 = p->score2; maxp[1] = p; } if (p->score3 > max3) { max3 = p->score3; maxp[2] = p; } avg[0] += p->score1; avg[1] += p->score2; avg[2] += p->score3; p = p->next; } avg[0] /= N; avg[1] /= N; avg[2] /= N; for (i = 0; i < 3; i++) { printf("课程:%d %5.1f\n最高分学生:%5d %s %5.1f %5.1f %5.1f %5.1f\n", i + 1, avg[i],maxp[i]->No,maxp[i]->name, maxp[i]->score1, maxp[i]->score2, maxp[i]->score3,maxp[i]->aver); } } int main() { STU* head = NULL; input_info(&head, N);//输入学生信息 output_score_aver(head); //输出信息 return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
- ¥15 不知道是该怎么引用多个函数片段
- ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
- ¥30 关于用python写支付宝扫码付异步通知收不到的问题
- ¥50 vue组件中无法正确接收并处理axios请求
- ¥15 隐藏系统界面pdf的打印、下载按钮
- ¥15 基于pso参数优化的LightGBM分类模型
- ¥15 安装Paddleocr时报错无法解决
- ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
- ¥50 分布式追踪trace异常问题