用PHP函数排学生成绩问题

2024-11-22 13:06:01
推荐回答(1个)
回答(1):

/*
1.学生成绩0-59不及格,60-70 普通成绩 70-80 良好 80-90 优秀 90-100 优异。现在有三个学生a,b,c,成绩分别是50分 80分 95分,判断这三个学生分别属于哪类。

首先,各类别分数设定不严谨,正确应该为:0-59不及格,60-69普通,70-79良好,80-89优秀,90-100优异
*/

echo "学生a类型为:" . getLevel(50) . ''; // 学生a,方便演示加了一个  换行符
echo "学生b类型为:" . getLevel(80) . ''; // 学生b,方便演示加了一个  换行符
echo "学生c类型为:" . getLevel(95) . ''; // 学生c,方便演示加了一个  换行符

/*
2.班级有一百名学生,分数区间0-100分。随机生成一百位学生的成绩,学生名称S1-----S100,学生成绩0-59不及格,60-70 普通成绩, 70-80 良好, 80-90 优秀, 90-100 优异,然后判断该学生分数所在档次。

同样,各类别分数设定不严谨,正确应该为:0-59不及格,60-69普通,70-79良好,80-89优秀,90-100优异
*/

// 获取随机生成分数数组
$scores = getRandscore(100);
// 循环处理类型
foreach ($scores as $key => $value) {
echo "学生S{$key}分数为:" . $value . ",类型为:" . getLevel($value) . ''; // 方便演示加了一个  换行符
}


/* 定义自定义函数 */

/**
 * 随机生成分数
 * 
 * @param int $number 学生人数
 * @return array
 */
function getRandscore($number = 0) {
// 定义数组
$scores = array();
// FOR 循环
for ($i = 1; $i <= $number; $i++) {
$scores[$i] = rand(0, 100);
}
// 输出结果
return $scores;
}

/**
 * 按分数获取等级
 * 
 * @param int $score 分数
 * @return string
 */
function getLevel($score = 0) {
if ($score <= 0) {
$i = 1; // 如果小于或等于0分,直接设定为第一级别,不及格
} elseif ($score >= 100) {
$i = 5; // 如果大于等于100分,直接设定为最高级别,优异
} else {
// 定义等级分数线,格式 array(等级1 => array(当前级别最低分数,当前级别最高分数))
$_score = array('1' => array(0, 59), '2' => array(60, 69), '3' => array(70, 79), '4' => array(80, 89), '5' => array(90, 100));
// 其他分数进行FOR循环判断,$i 值为 1 - 5
for ($i = 1; $i < 6; $i++) {
if ($score >= $_score[$i][0] && $score <= $_score[$i][1]) {
break; //中断循环判断
}
}
}
// 定义等级文字
$_level = array( '1' => '不及格', '2' => '普通', '3' => '良好', '4' => '优秀', '5' => '优异');
// 输出结果
return $_level[$i] ? $_level[$i] : '其他';
}