当前位置: 首页 > article >正文

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;
}


http://www.kler.cn/a/522636.html

相关文章:

  • three.js用粒子使用canvas生成的中文字符位图材质
  • csapp2.4节——浮点数
  • MV结构下设置Qt表格的代理
  • 力扣【669. 修剪二叉搜索树】Java题解
  • BOM对象location与数组操作结合——查询串提取案例
  • 基于SpringBoot的高校一体化服务平台的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • maven的打包插件如何使用
  • CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)
  • 在做题中学习(81):替换后的重复字符
  • L30.【LeetCode题解】丢失的数字
  • 【无标题】TensorFlow、PyTorch、ONNX、TensorRT
  • 认知计算与 AI 大模型:数据仓库、数据湖与数据分析的变革力量
  • 《SwinIR:使用Swin-Transformer图像恢复》学习笔记
  • 深度解析:基于Vue 3与Element Plus的学校管理系统技术实现
  • LVGL+FreeRTOS实战项目:智能健康助手(lcd篇)
  • Java学习笔记(二十五)
  • Python面向对象编程实战:构建强大的 `Person` 类
  • CSS知识总结
  • zookeeper-3.8.3-基于ACL的访问控制
  • 私域流量池构建与转化策略:以开源链动2+1模式AI智能名片S2B2C商城小程序为例
  • Hive详细讲解-调优分区表速通
  • The Simulation技术浅析(二):模型技术
  • Python爬虫获取custom-1688自定义API操作接口
  • 【异步编程基础】FutureTask基本原理与异步阻塞问题
  • constexpr 实现编译时加密
  • Spark入门(Python)