C语言大作业学生系统第一关 Init

题目要求:

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

  • 姓名(由 first name 和last name 两部分组成,例如Jingyu LI,first_name = "Jingyu" last_name = "LI") ;
  • 学号(12 位数字组成,开头4位为2022、2021、2020);
  • C语言成绩(一个大于等于零的整数);
  • 重修信息(学号 2022开头的重修信息为否(0),其余为是(1));
  • GPA等级(A+, A, B+, B, C+, C, D, F ):
     
      
    1. A+: 100-93;
    2. A: 92-85;
    3. B+: 84-80;
    4. B: 79-75;
    5. C+:74-70;
    6. C: 69-65;
    7. D: 64-60;
    8. F: <60.

其中,姓名,学号,成绩为输入数据,其余数据需要你计算。 另外,学号不符合规定的数据需要删除掉。 本实训所有关卡需要采用结构体知识点。

编程要求

根据提示,在右侧编辑器补充代码,完成学生考试信息的初始化。

测试说明

输入说明: 一系列 名、姓、学号、成绩。

输出说明: 名、姓、学号、成绩、重修信息、GPA等级。

测试用例解释Geinyu LEE 20210000 89 不合法,需删掉。

平台会对你编写的代码进行测试:

测试输入: Jingyu LI 202200000000 85 Jy LEE 202200100000 89 Jxxxyx Leeeee 202000100000 100 Geinyu LEE 20220000 89 Jingyu11 LI 202200000001 85

预期输出: Name_f Name_l stu_id score retake GPA rank Jingyu LI 202200000000 85 0 A Jy LEE 202200100000 89 0 A Jxxxyx Leeeee 202000100000 100 1 A+ Jingyu11 LI 202200000001 85 0 A

代码实现

#include <stdio.h>

#include <string.h>

#include <stdbool.h>

// 好吧还是只能定义一个结构体来储存学生信息

typedef struct {  

    char first_name[20];  

    char last_name[20];  

    long long id;  

    int c_score;  

    int retake;  

    char gpa_grade[3];  

} Student;

// 老夫先定义一个计算GPA等级的函数,其中strcpy 会将 src 所指向的字符串(包括终止的空字符 '\0')复制到 dest 所指向的数组中。函数返回 dest 的值(即目标数组的起始地址)。简单来说strcpy 函数用于复制一个字符串到另一个字符串,这里我复制了输入成绩的字符串和由条件得到成绩等待输出

void calculateGPA(int score, char* gpa_grade) {  

    if (score >= 93) strcpy(gpa_grade, "A+");  

    else if (score >= 85 && score <= 92) strcpy(gpa_grade, "A");  

    else if (score >= 80 && score <= 84) strcpy(gpa_grade, "B+");  

    else if (score >= 75 && score <= 79) strcpy(gpa_grade, "B");  

    else if (score >= 70 && score <= 74) strcpy(gpa_grade, "C+");  

    else if (score >= 65&& score <= 69) strcpy(gpa_grade, "C");  

    else if (score >= 60 && score <= 64) strcpy(gpa_grade, "D");  

    else strcpy(gpa_grade, "F");  

}

int main(){

    Student students[100]; // 使用结构体数组存储学生信息  

    int n = 0; // 当前学生数量

    //接下来读取学生信息,直到文件结束或达到最大限制  

    while (n < 100 && scanf("%19s %19s %lld %d", students[n].first_name, students[n].last_name, &students[n].id, &students[n].c_score) == 4) {  

        // 验证一波学号  

        if (students[n].id < 202000000000LL || students[n].id > 202299999999LL || (students[n].id >= 202300000000LL)) {  

            //printf("Invalid ID, skipped.\n");

             //如果有小笨蛋输入错误,跳过这个错误输入

        } else {  

            // 设置重修信息,students[n].id >= 202200000000LL 是一个条件表达式,它会检查students[n].id是否大于或等于202200000000LL。如果这个条件为真(即学号大于或等于202200000000),则三元运算符的结果为0。如果这个条件为假(即学号小于202200000000),则三元运算符的结果为1,然后,这个三元运算符的结果(即0或1)会被赋值给students[n].retake。  

            students[n].retake = (students[n].id >= 202200000000LL) ? 0 : 1;  

            // 引用前面定义的函数计算GPA等级  

            calculateGPA(students[n].c_score, students[n].gpa_grade);  

            n++; // 增加学生数量  

        }  

    }  

// 输出学生信息  

    printf("Name_f Name_l stu_id score retake GPA rank\n");

    for (int i = 0; i < n; i++) {  

        printf("%s %s %lld %d %d %s\n",  students[i].first_name, students[i].last_name, students[i].id, students[i].c_score, students[i].retake, students[i].gpa_grade);  

       

    }  

    return 0;  

}  

我是菜鸡,还求指正。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 学生成绩管理系统是目前教育管理中不可缺少的一项工具。在这个大数据时代,管理学生的各种信息和数据已经成为了对于学院、教师以及学生的共同需求。在C语言课程中,学生成绩管理系统已经成为了一个重要的课程大作业学生需要利用C语言编写一个能够准确、高效并且易于操作的成绩管理系统。 这个学生成绩管理系统需要实现以下功能:首先,学生和教师账号管理,确保只有合法的用户能够访问系统;其次,学生、课程和成绩的录入、修改、删除以及查询功能,为学院、教师和学生提供实时的成绩管理服务;最后,具有数据统计和分析功能,能够方便使用者得到直观的数据汇总。 C语言窗口大作业中,学生成绩管理系统需要进行良好的代码设计和优化。学生在完成大作业时需要考虑程序的可读性、可维护性以及安全性,并通过良好的代码组织和注释确保代码能够被他人轻松理解和修改。同时,学生还需要考虑如何减少程序的运行时间和占用空间,提高程序的效率,避免出现运行缓慢等问题。 总之,学生成绩管理系统是C语言课程的一项重要大作业。通过编写这个程序,学生可以学习和巩固C语言的基础知识,并加深对于程序设计和优化的理解和实践能力。对于学生而言,这是一个很好的实践机会。而对于教师来说,这也是一个很好的考核标准,可以帮助他们更好地了解学生的学习水平和能力。 ### 回答2: 学生成绩管理系统是一款帮助学生管理个人成绩和教师管理班级学生成绩的应用软件。本大作业使用C语言编写,主要功能有学生信息维护、课程信息维护、学生成绩录入、查询、修改、删除等。 学生信息维护包括学生的基本信息,如姓名、学号、班级、性别等。课程信息维护包括课程的名称、学分、授课教师等。管理员可以通过界面进行添加、修改、查询和删除操作。 学生成绩的录入和查询是本系统的主要功能。管理员可以根据班级、学生、课程等条件进行查询,还可以进行成绩统计和排名。此外,管理员也可以进行成绩的修改和删除操作,确保成绩的真实、准确和安全。 此外,本系统还具备用户登陆和权限控制功能,管理员和学生可以通过不同的账号和密码进行登陆,根据权限不同,管理员可以进行更多的操作,而学生则只能查询自己的成绩。 总之,本系统是一款实用、稳定的学生成绩管理软件,具备完善的数据维护和强大的查询统计功能,可以为学生和教师提供更好的服务。通过学习C语言,我们可以更深入地理解编程思想,提高编程能力和实践能力,为将来的工作和学习打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值