1、编写M函数文件,某班学生某门课成绩为:60、75、85、96、52、36、86、56、94、84、77,用switch结构统计90-99,80-89,70-79,60-69及60分以下各分数段的人数,并将各人成绩变为优、良、中、及格和不及格表示,统计人数和成绩变换都用子函数实现。
你好同学,这个就是判断分数所处的阶段,然后返回成绩和各个分段的人数
function [count, grade] = gradeDistribution(score)
count = zeros(1,5);%count有5个值,分别是优、良、中、及格、不及格五个的人数
nscore = numel(score);%总的人数
grade(nscore) = "";
grade = reshape(grade,size(score));
for i = 1:nscore %对每个分数段进行判断
switch score(i)
case num2cell(90:99)
grade(i)="优";
count(1) = count(1)+1;
case num2cell(80:89)
grade(i)="良";
count(2) = count(2)+1;
case num2cell(70:79)
grade(i)="中";
count(3) = count(3)+1;
case num2cell(60:69)
grade(i)="及格";
count(4) = count(4)+1;
case num2cell(0:59)
grade(i)="不及格";
count(5) = count(5)+1;
end
end
end
调用示例:
score=[60,75,85,96,52,36,86,56,94,84,77];
[count, grade] = gradeDistribution(score)
结果显示
count =
2 3 2 1 3
grade =
1×11 string 数组
"及格" "中" "良" "优" "不及格" "不及格" "良" "不及格" "优" "良" "中"
可见成绩为优、良、中、及格和不及格的人数分别为 2、3 、2、1 、3人。