Menu
CoddyTech

生成成绩单

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 38 课,共 68 课。

challenge icon

挑战

简单

你会收到一个输入:表示学生成绩册的 JSON 对象。成绩册以学生姓名作为键,每个学生都有一个 "id" 和一个包含考试分数的 "grades" 数组。

读取输入,将 JSON 字符串转换为成绩册数组,并为所有学生生成格式化的成绩单。对于每个学生,显示其姓名、学生 ID、所有单项成绩,以及四舍五入到小数点后 2 位的平均成绩。

严格按照以下格式输出:

  • 将 ===== REPORT CARD ===== 作为标题输出
  • 对于每个学生,输出:
    • Student: [name]
    • ID: [student_id]
    • Grades: [grade1], [grade2], [grade3], ...(所有成绩之间用逗号和空格分隔)
    • Average: [average](四舍五入到小数点后 2 位)
    • 每个学生的信息后空一行,最后一个学生除外

输入格式:一行内容,其中包含表示成绩册的 JSON 对象(示例:{"Alice":{"id":101,"grades":[85,92,78]},"Bob":{"id":102,"grades":[90,88,95]},"Charlie":{"id":103,"grades":[76,84,89]}})

预期输出:格式化的成绩单,显示每个学生的姓名、ID、所有成绩和计算出的平均成绩

亲手试试

<?php
// 读取 JSON 输入
$input = trim(fgets(STDIN));

// 将 JSON 转换为数组
$gradebook = (array)json_decode($input, true);

// 打印表头
echo "===== REPORT CARD =====\n";

// TODO: 在下面编写你的代码
// 遍历 gradebook 中的每个学生
// 对每个学生:
//   - 打印学生的姓名
//   - 打印学生的 ID
//   - 打印学生的所有成绩
//   - 计算并打印学生的平均分(保留 2 位小数)
//   - 在学生之间添加一个空行(最后一名学生之后除外)

?>

逻辑与流程中的所有课

自己练习: PHP 在线编译器