模拟成绩录入以及计算班级平均分及格人数 假如有三个班级,每班5人,按班级分别依次录入学号和分数,求该班的平均分、及格人数。 要求: 1) 使用多种循环、使用break和continue语句。 2) 如果某分数录入为负值,则停止当前录入并提示录入错误。。 3) 学号必须是三位数否则提示重新输入学号。
时间: 2023-05-23 09:02:32 浏览: 215
以下是一个 Lua 的示例代码,可用于模拟成绩录入、计算班级平均分和及格人数:
local function inputScore()
local score
repeat
score = io.read("*n")
if score < 0 then
io.write("分数不能为负值,请重新输入:")
end
until score >= 0
return score
end
local function inputID()
local id
repeat
id = io.read("*n")
if id < 100 or id > 999 then
io.write("学号必须是三位数,请重新输入:")
end
until id >= 100 and id <= 999
return id
end
local function calcClassAvg(scores)
local sum, count = 0, #scores
for i=1,count do
sum = sum + scores[i]
end
return sum / count
end
local function calcClassPassCount(scores)
local count = 0
for i=1,#scores do
if scores[i] >= 60 then
count = count + 1
end
end
return count
end
local students = {}
for i=1,3 do
students[i] = {}
io.write(string.format("请输入第%d个班级的学生学号和分数:\n", i))
for j=1,5 do
io.write(string.format("请输入第%d个学生的学号(三位数):", j))
local id = inputID()
io.write("请输入该学生成绩(不得为负数):")
local score = inputScore()
table.insert(students[i], {id = id, score = score})
end
end
for i=1,3 do
io.write(string.format("第%d个班级的成绩情况如下:\n", i))
for j=1,5 do
local student = students[i][j]
io.write(string.format("%d\t%d\n", student.id, student.score))
end
local avgScore = calcClassAvg(students[i])
io.write(string.format("该班级的平均分为:%.2f\n", avgScore))
local passCount = calcClassPassCount(students[i])
io.write(string.format("该班级的及格人数为:%d\n", passCount))
end
注意:本代码没有考虑输入不合法的情况,如学生信息重复、学号超出范围等,需要根据实际情况进行判断和处理。此外,由于 Lua 不支持 continue 关键字,本代码使用了类似 continue 的方式实现了跳过负数的处理逻辑。
阅读全文