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;
}
相关推荐
掘金安东尼2 小时前
Amazon Lambda + API Gateway 实战,无服务器架构入门
算法·架构
码流之上3 小时前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
用户6120414922134 小时前
C语言做的文本词频数量统计功能
c语言·后端·敏捷开发
快手技术5 小时前
快手提出端到端生成式搜索框架 OneSearch,让搜索“一步到位”!
算法
CoovallyAIHub1 天前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP1 天前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo1 天前
半开区间和开区间的两个二分模版
算法
moonlifesudo1 天前
300:最长递增子序列
算法
CoovallyAIHub1 天前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉