codeblock
C语言
某班期末考试科目为物理(PH)、数学(MT)、英语(EN),最多不超过30人参加考试,分别实现下列功能(要求用多个函数实现):
(1)函数Total_1:输入n个学生的学号num,计算每个学生的总分sum和平均分ave,并按照:(学号 总分 平均分)的格式分行打印;
(2)函数Sort:按照总分成绩由高到低排出成绩的名次,并按照:(学号 总分)的格式分行打印;
(3)函数Total_2:分别统计各学科的平均分,并按照:(科目 平均分)的格式分行打印;
codeblock,C语言,某班期末考试科目为物理(PH)、数学(MT)、英语(EN),最多不超过30人参加考试,分别实现下列功能(要求用多个函数实现)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注#include <stdio.h> #include <stdlib.h> #define MAX_STUDENTS 30 #define SUBJECTS 3 typedef struct { int num; int scores[SUBJECTS]; int sum; double ave; } Student; void Total_1(Student students[], int n) { printf("学号\t总分\t平均分\n"); for (int i = 0; i < n; i++) { int sum = 0; for (int j = 0; j < SUBJECTS; j++) { sum += students[i].scores[j]; } students[i].sum = sum; students[i].ave = (double) sum / SUBJECTS; printf("%d\t%d\t%.2f\n", students[i].num, students[i].sum, students[i].ave); } printf("\n"); } int compare(const void *a, const void *b) { return ((Student *) b)->sum - ((Student *) a)->sum; } void Sort(Student students[], int n) { qsort(students, n, sizeof(Student), compare); printf("名次\t学号\t总分\n"); for (int i = 0; i < n; i++) { printf("%d\t%d\t%d\n", i + 1, students[i].num, students[i].sum); } printf("\n"); } void Total_2(Student students[], int n) { int subjectSum[SUBJECTS] = {0}; double subjectAve[SUBJECTS] = {0}; for (int i = 0; i < n; i++) { for (int j = 0; j < SUBJECTS; j++) { subjectSum[j] += students[i].scores[j]; } } for (int i = 0; i < SUBJECTS; i++) { subjectAve[i] = (double) subjectSum[i] / n; } const char *subjects[SUBJECTS] = {"物理", "数学", "英语"}; printf("科目\t平均分\n"); for (int i = 0; i < SUBJECTS; i++) { printf("%s\t%.2f\n", subjects[i], subjectAve[i]); } printf("\n"); } int main() { int n; Student students[MAX_STUDENTS]; printf("请输入学生人数(不超过30人):"); scanf("%d", &n); if (n > MAX_STUDENTS) { printf("输入的人数超过最大限制!\n"); return 0; } for (int i = 0; i < n; i++) { printf("请输入第 %d 个学生的学号:", i + 1); scanf("%d", &students[i].num); printf("请输入第 %d 个学生的物理、数学和英语成绩(以空格分隔):", i + 1); for (int j = 0; j < SUBJECTS; j++) { scanf("%d", &students[i].scores[j]); } printf("\n"); } Total_1(students, n); Sort(students, n); Total_2(students, n); return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报