学生期末考试信息存储

该程序用于存储不超过100名学生的期末考试信息,包括姓名、学号(12位,以2022、2021、2020开头)、C语言成绩和GPA等级。程序会验证学号格式,计算GPA,并标记是否为重修。不符合学号规则的数据将被忽略。
摘要由CSDN通过智能技术生成

你需要将一系列的学生期末考试信息进行存储(学生人数不会超过100)。每个学生的信息包括:

姓名(由 first name 和last name 两部分组成,例如Jingyu LI,first_name = "Jingyu" last_name = "LI") ;

学号(12 位数字组成,开头4位为2022、2021、2020);

C语言成绩(一个大于等于零的整数);

重修信息(学号 2022.........为否,其余为是);

GPA等级(A+, A, B+, B, C+, C, D, F )。

A+: 100-93;

A: 92-85;

B+: 84-80;

B: 79-75;

C+:74-70;

C: 69-65;

D: 64-60;

F: <60.

其中,姓名,学号,成绩为输入数据,其余数据需要你计算。

另外,学号不符合规定的数据需要删除掉。

#include <stdio.h>
#include <stdbool.h>

char GPA(int score) {//判断GPA多少
    if (score >= 93 && score <= 100) {
        printf("A+\n");
    } else if (score >= 85 && score <= 92) {
        printf("A\n");
    } else if (score >= 80 && score <= 84) {
        printf("B+\n");
    } else if (score >= 75 && score <= 79) {
        printf("B\n");
    } else if (score >= 70 && score <= 74) {
        printf("C+\n");
    } else if (score >= 65 && score <= 69) {
        printf("C\n");
    } else if (score >= 60 && score <= 64) {
        printf("D\n");
    } else {
        printf("F\n");
    }
}

bool is_id(char id[]) {//判断是否为学号
    if (id[0] == '2' && id[1] == '0' && id[2] == '2') {//前三位是否为202
        if (id[3] == '0' || id[3] == '1' || id[3] == '2') {
            for (int i = 4; i < 12; i++) {//是否十二位输完
                if (id[i] < '0' || id[i] > '9') {
                    return false;
                }
            }
            return true;
        }
    }
    return false;
}

bool is_chongxiu(char id[]) {//判断重修
    if (id[3] == '2') {
        return false;
    } else {
        return true;
    }
}

int main() {
    char first_name[20], last_name[20], id[13];
    int score;
    printf("Name_f Name_l stu_id score retake GPA rank\n");
    while (scanf("%s %s %s %d", first_name, last_name, id, &score) == 4) {//一次输入一个人的四个信息
        if (!is_id(id)) {//如果学号形式不正确继续输入下一部分信息
            continue;
        }
        printf("%s %s %s %d ", first_name, last_name, id, score);
        if (is_chongxiu(id)) {
            printf("1 ");
        } else {
            printf("0 ");
        }
        GPA(score);
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值