【码图C语言】第四章 数组与结构 基础实验2

4.7 学生管理系统

通过课程进入题 号:1104.7 学生管理系统语言要求:C++
编写学生管理系统,其中学生的信息有姓名(汉语拼音,最多20个字符,长度21的字符数组),
性别(男/女,用1表示男,2表示女,整数)、生日(19850101(年月日),整数)、身高(以m为单位,实数),
还需要处理C语言、微积分两门课的成绩(整数),请编写程序实现功能:
输入学生的人数和每个学生的信息;输出每门课程的总平均成绩、最高分和最低分,以及获得最高分的学生的信息。
需要注意的是某门课程最高分的学生可能不只一人。


输入输出格式要求:
	身高输出时保留两位小数,请按照例子中进行输出,请勿输出其他字符
例如:
输入:3 zhangsan 1 19910101 1.85 85 90 lisi 1 19920202 1.56 89 88 wangwu 2 19910303 1.6 89 90回车
输出:
C_average:87回车
C_max:89回车
lisi 1 19920202 1.56 89 88回车
wangwu 2 19910303 1.60 89 90回车
C_min:85回车
Calculus_average:89回车
Calculus_max:90回车
zhangsan 1 19910101 1.85 85 90回车
wangwu 2 19910303 1.60 89 90回车
Calculus_min:88回车
#include <stdio.h>
#include <string.h>

#define MAXN 100

struct Student {
    char name[21]; // 姓名
    int gender; // 性别,1代表男性,2代表女性
    int birthdate; // 生日,格式为年月日,如:19910101
    double height; // 身高,以m为单位
    int c_score; // C语言成绩
    int calculus_score; // 微积分成绩
};

int main() {
    int n;
    scanf("%d", &n);
    struct Student students[MAXN];
    for (int i = 0; i < n; i++) {
        scanf("%s%d%d%lf%d%d", students[i].name, &students[i].gender, &students[i].birthdate,
              &students[i].height, &students[i].c_score, &students[i].calculus_score);
    }

    // 计算C语言平均分、最高分、最低分及学生信息
    int c_sum = 0, c_max = 0, c_min = 100;
    int c_max_index[MAXN], c_max_count = 0;
    for (int i = 0; i < n; i++) {
        c_sum += students[i].c_score;
        if (students[i].c_score > c_max) {
            c_max = students[i].c_score;
            c_max_count = 1;
            c_max_index[0] = i;
        } else if (students[i].c_score == c_max) {
            c_max_index[c_max_count++] = i;
        }
        if (students[i].c_score < c_min) {
            c_min = students[i].c_score;
        }
    }
    double c_avg = (double)c_sum / n;

    // 计算微积分平均分、最高分、最低分及学生信息
    int calculus_sum = 0, calculus_max = 0, calculus_min = 100;
    int calculus_max_index[MAXN], calculus_max_count = 0;
    for (int i = 0; i < n; i++) {
        calculus_sum += students[i].calculus_score;
        if (students[i].calculus_score > calculus_max) {
            calculus_max = students[i].calculus_score;
            calculus_max_count = 1;
            calculus_max_index[0] = i;
        } else if (students[i].calculus_score == calculus_max) {
            calculus_max_index[calculus_max_count++] = i;
        }
        if (students[i].calculus_score < calculus_min) {
            calculus_min = students[i].calculus_score;
        }
    }
    double calculus_avg = (double)calculus_sum / n;

    // 输出结果
    printf("C_average:%.0lf\n", c_avg);
    printf("C_max:%d\n", c_max);
    for (int i = 0; i < c_max_count; i++) {
        struct Student s = students[c_max_index[i]];
        printf("%s %d %d %.2lf %d %d\n", s.name, s.gender, s.birthdate, s.height, s.c_score, s.calculus_score);
    }
    printf("C_min:%d\n", c_min);
    printf("Calculus_average:%.0lf\n", calculus_avg);
    printf("Calculus_max:%d\n", calculus_max);
    for (int i = 0; i < calculus_max_count; i++) {
        struct Student s = students[calculus_max_index[i]];
        printf("%s %d %d %.2lf %d %d\n", s.name, s.gender, s.birthdate, s.height, s.c_score, s.calculus_score);
    }
    printf("Calculus_min:%d\n", calculus_min);

    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值