Menu
CoddyTech

复习:学生数据结构体

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 43 课,共 63 课。

challenge icon

挑战

简单

编写一个 C 程序,通过学生管理系统展示使用结构体的完整流程。你的程序应当:

  1. 定义一个名为 Student 的 struct,包含以下成员:
    • 一个整数 id,用于存储学生的 ID 号
    • 一个浮点数 grade,用于存储学生的成绩
  2. 在 main 函数中,创建一个名为 student1 的 Student 变量
  3. 使用 scanf 从输入中读取学生的 ID 和成绩:
    • 读取一个整数作为 ID,并将其存储在 student1.id 中
    • 读取一个浮点数作为成绩,并将其存储在 student1.grade 中
  4. 读取输入后,执行以下验证和计算:
    • 如果成绩大于 100.0,将其设为 100.0
    • 如果成绩小于 0.0,将其设为 0.0
    • 在当前成绩(验证后)的基础上加 5.0,计算奖励成绩
    • 如果奖励成绩超过 100.0,将其设为 100.0
  5. 按以下精确格式输出学生信息:
    • Student Information:
    • ID: [id]
    • Original Grade: [grade]
    • Bonus Grade: [bonus_grade]
    • Grade Status: [status]
  6. 按以下规则确定成绩状态:
    • 原始成绩为 90.0 或更高:Excellent
    • 原始成绩为 80.0 到 89.9:Good
    • 原始成绩为 70.0 到 79.9:Average
    • 原始成绩低于 70.0:Needs Improvement

这个挑战将检验你对结构体定义、变量创建、使用点运算符访问成员、使用 scanf 处理输入,以及用于数据验证和处理的条件逻辑的理解。你将通过一个实际场景练习使用结构体的完整流程。

亲手试试

#include <stdio.h>

// TODO: 在这里定义 Student 结构体

int main() {
    // TODO: 创建一个名为 student1 的 Student 变量
    
    // 读取输入
    int id;
    float grade;
    scanf("%d", &id);
    scanf("%f", &grade);
    
    // TODO: 将输入值存入结构体成员
    
    // TODO: 实现成绩验证和加分计算
    
    // TODO: 确定成绩状态
    
    // 输出结果
    printf("Student Information:\n");
    printf("ID: %d\n", /* TODO: 输出学生 ID */);
    printf("Original Grade: %.1f\n", /* TODO: 输出原始成绩 */);
    printf("Bonus Grade: %.1f\n", /* TODO: 输出加分后成绩 */);
    printf("Grade Status: %s\n", /* TODO: 输出成绩状态 */);
    
    return 0;
}

逻辑与流程中的所有课

自己练习: C 在线编译器