写一个求30名学生成绩平均数和方差并将学生成绩分成五个等级并求学生在每个等级的分布率的matlab函数程序要求具有分支循环结构和自定义函数的调用
时间: 2024-02-23 15:03:20 浏览: 76
好的,以下是您所需的matlab函数程序:
```matlab
function [average, variance, distribution] = score_analysis(scores)
% 计算学生成绩平均数和方差,并将学生成绩分成五个等级并求学生在每个等级的分布率
% scores: 30名学生的成绩向量
% average: 平均数
% variance: 方差
% distribution: 每个等级的分布率向量
% 计算平均数
average = mean(scores);
% 计算方差
variance = var(scores);
% 将成绩分成五个等级
level = zeros(1, 5);
for i = 1:length(scores)
if scores(i) < 60
level(1) = level(1) + 1;
elseif scores(i) >= 60 && scores(i) < 70
level(2) = level(2) + 1;
elseif scores(i) >= 70 && scores(i) < 80
level(3) = level(3) + 1;
elseif scores(i) >= 80 && scores(i) < 90
level(4) = level(4) + 1;
else
level(5) = level(5) + 1;
end
end
% 计算每个等级的分布率
distribution = level / length(scores);
```
另外,您需要在同一目录下创建一个名为`score_analysis_test.m`的测试脚本,用于测试上述函数的正确性:
```matlab
% 测试score_analysis函数
% 生成随机成绩
scores = randi([50 100], 1, 30);
% 调用score_analysis函数
[average, variance, distribution] = score_analysis(scores);
% 输出结果
fprintf('平均数为:%.2f\n', average);
fprintf('方差为:%.2f\n', variance);
fprintf('每个等级的分布率为:\n');
fprintf('不及格(<60):%.2f%%\n', distribution(1)*100);
fprintf('及格(60~69):%.2f%%\n', distribution(2)*100);
fprintf('中等(70~79):%.2f%%\n', distribution(3)*100);
fprintf('良好(80~89):%.2f%%\n', distribution(4)*100);
fprintf('优秀(>=90):%.2f%%\n', distribution(5)*100);
```
您可以在Matlab命令行中运行`score_analysis_test`来测试程序的正确性。
阅读全文