用MATLAB 分别使用if-else-end和switch-case分支(条件)结构,将学生的百分制成绩转换为五分制成绩。定义分数段:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(0-59)。假设以下5位同学 Jack、Marry、Peter、Rose、Tom的百分制成绩分别为72、83、56、94、100,请编写程序显示5位同学的姓名、百分制成绩,并给出他们的五分制成绩。 (1)请提交程序、结果和流程图。 (2)比较两种分支结构,说明解决这个问题你更 喜欢使用哪一种?为什么?
时间: 2023-06-14 21:05:26 浏览: 235
教师节主题班会.pptx
使用if-else-end的程序代码如下:
```matlab
% 定义五分制成绩的字符串数组
grades = ["不及格", "不及格", "不及格", "不及格", "不及格"];
% 定义五位同学的姓名和百分制成绩
names = ["Jack", "Marry", "Peter", "Rose", "Tom"];
scores = [72, 83, 56, 94, 100];
% 计算五分制成绩
for i = 1:length(scores)
if scores(i) == 100
grades(i) = "优秀";
elseif scores(i) >= 90
grades(i) = "优秀";
elseif scores(i) >= 80
grades(i) = "良好";
elseif scores(i) >= 60
grades(i) = "及格";
else
grades(i) = "不及格";
end
end
% 显示结果
disp("姓名" + " 百分制成绩" + " 五分制成绩");
for i = 1:length(names)
disp(names(i) + " " + scores(i) + " " + grades(i));
end
```
使用switch-case的程序代码如下:
```matlab
% 定义五分制成绩的字符串数组
grades = ["不及格", "不及格", "不及格", "不及格", "不及格"];
% 定义五位同学的姓名和百分制成绩
names = ["Jack", "Marry", "Peter", "Rose", "Tom"];
scores = [72, 83, 56, 94, 100];
% 计算五分制成绩
for i = 1:length(scores)
switch true
case scores(i) == 100
grades(i) = "优秀";
case scores(i) >= 90 && scores(i) < 100
grades(i) = "优秀";
case scores(i) >= 80 && scores(i) < 90
grades(i) = "良好";
case scores(i) >= 60 && scores(i) < 80
grades(i) = "及格";
otherwise
grades(i) = "不及格";
end
end
% 显示结果
disp("姓名" + " 百分制成绩" + " 五分制成绩");
for i = 1:length(names)
disp(names(i) + " " + scores(i) + " " + grades(i));
end
```
程序的流程图如下:
![分支结构流程图](https://i.imgur.com/f3KrnMd.png)
个人更喜欢使用if-else-end分支结构,因为它的逻辑相对更清晰,代码也更易读。而switch-case结构虽然可以实现同样的功能,但是在分支较多的情况下,代码可能会出现较长的情况列表,使得代码可读性下降。
阅读全文