C语言练习(28)

有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程的成绩、平均分数)。

要求用一个input函数输入10个学生数据,用一个average函数求总平均分,用max函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。

复制代码
#include <stdio.h>
#include <string.h>

// 定义结构体
struct Student {
    int id;
    char name[20];
    int scores[3];
    double average_score;
};

// 输入函数
void input(struct Student students[], int n) {
    int i, j;
    for (i = 0; i < n; i++) {
        printf("请输入第 %d 个学生的学号: ", i + 1);
        scanf_s("%d", &students[i].id);
        printf("请输入第 %d 个学生的姓名: ", i + 1);
        scanf_s("%s", students[i].name);
        for (j = 0; j < 3; j++) {
            printf("请输入第 %d 个学生的第 %d 门课程成绩: ", i + 1, j + 1);
            scanf_s("%d", &students[i].scores[j]);
        }
    }
}

// 求平均成绩函数
double average(struct Student students[], int n) {
    int i, j;
    double sum = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < 3; j++) {
            sum += students[i].scores[j];
        }
    }
    return sum / (n * 3);
}

// 找最高分学生函数
struct Student max(struct Student students[], int n) {
    int i, j;
    struct Student max_student = students[0];
    for (i = 0; i < n; i++) {
        int total_score = 0;
        for (j = 0; j < 3; j++) {
            total_score += students[i].scores[j];
        }
        if (total_score > max_student.average_score * 3) {
            max_student = students[i];
        }
    }
    // 计算平均分
    max_student.average_score = (double)(max_student.scores[0] + max_student.scores[1] + max_student.scores[2]) / 3;
    return max_student;
}

int main() {
    struct Student students[10];
    // 输入学生数据
    input(students, 10);
    // 求总平均成绩
    double avg = average(students, 10);
    // 找最高分学生
    struct Student max_student = max(students, 10);
    // 输出总平均成绩
    printf("3门课程总平均成绩为: %.2f\n", avg);
    // 输出最高分学生数据
    printf("最高分学生数据:\n");
    printf("学号: %d\n", max_student.id);
    printf("姓名: %s\n", max_student.name);
    printf("3门课程成绩: %d, %d, %d\n", max_student.scores[0], max_student.scores[1], max_student.scores[2]);
    printf("平均分数: %.2f\n", max_student.average_score);
    return 0;
}
相关推荐
噜噜大王_11 小时前
深入理解 C 语言内存操作函数:memcpy、memmove、memset、memcmp
c语言·开发语言
paeamecium12 小时前
【PAT甲级真题】- Cars on Campus (30)
数据结构·c++·算法·pat考试·pat
chh56312 小时前
C++--模版初阶
c语言·开发语言·c++·学习·算法
RTC老炮13 小时前
带宽估计算法(gcc++)架构设计及优化
网络·算法·webrtc
dsyyyyy110113 小时前
计数孤岛(DFS和BFS解决)
算法·深度优先·宽度优先
会编程的土豆14 小时前
01背包与完全背包详解
开发语言·数据结构·c++·算法
汀、人工智能14 小时前
[特殊字符] 第86课:最大正方形
数据结构·算法·数据库架构·图论·bfs·最大正方形
hetao173383714 小时前
2026-04-12~14 hetao1733837 的刷题记录
c++·算法
lxh011315 小时前
正则表达式匹配
算法
SuperChe15 小时前
用AI Native的方式优化前端性能
前端·算法