随机生成100个学生的三门课程成绩存入矩阵P中,并进行如
下处理:
•分别求每门课的最高分、最低分及其相应学生学号
•三门课总分的最高分、最低分及相应学生学号
•分别统计3门课在50-59、60-69、…分数段的人数。
主要用了max和min返回最值和最值位置的特点,还有矩阵的条件筛选 。。。&。。。 这样写更快。
A.XueHao=0;
A.YuWen=0;
A.Shuxue=0;
A.YingYu=0;
matA = repmat(A,100,1);
for i=1:1:100
matA(i,1).XueHao=i;
matA(i,1).YuWen = floor(rand()*100);
matA(i,1).Shuxue= floor(rand()*100);
matA(i,1).YingYu= floor(rand()*100);
end
%分别求每门课的最高分、最低分及其相应学生学号
[Max_YuWen,number_YuWen] = max([matA.YuWen]);
[Max_Shuxue,number_Shuxue] = max([matA.Shuxue]);
[Max_YingYu,number_YingYu] = max([matA.YingYu]);
disp(['语文最高分:',num2str(Max_YuWen),',学号:', num2str(number_YuWen)]);
disp(['数学最高分:',num2str(Max_Shuxue),',学号:', num2str(number_Shuxue)]);
disp(['英语最高分:',num2str(Max_YingYu),',学号:', num2str(number_YingYu)]);
[Min_YuWen,number_YuWen] = min([matA.YuWen]);
[Min_Shuxue,number_Shuxue] = min([matA.Shuxue]);
[Min_YingYu,number_YingYu] = min([matA.YingYu]);
disp(['语文最低分:',num2str(Min_YuWen),',学号:', num2str(number_YuWen)]);
disp(['数学最低分:',num2str(Min_Shuxue),',学号:', num2str(number_Shuxue)]);
disp(['英语最低分:',num2str(Min_YingYu),',学号:', num2str(number_YingYu)]);
%三门课总分的最高分、最低分及相应学生学号
Zong=zeros(100,2);
for i=1:1:100
Zong(i,1) =matA(i,1).XueHao;
Zong(i,2)=matA(i,1).YuWen+matA(i,1).Shuxue+matA(i,1).YingYu;
end
[ZongMax,ZongNum] = max(Zong(:,2));
disp(['总分最高:',num2str(ZongMax),',学号:', num2str(ZongNum)]);
[ZongMin,ZongNum] = min(Zong(:,2));
disp(['总分最低:',num2str(ZongMin),',学号:', num2str(ZongNum)]);
%分别统计3门课在50-59、60-69、…分数段的人数。
Count_50_div10_100_YuWen_ShuXue_YingYu=zeros(5,3);
MatDoubleA = [matA.YuWen;matA.Shuxue;matA.YingYu]';
for col =1:1:3
k=1;
for score = 50:10:90
if(score==90)
Count_50_div10_100_YuWen_ShuXue_YingYu(k,col)=size(MatDoubleA(MatDoubleA(:,col)>=score & MatDoubleA(:,col)<=score+10,:),1);
else
Count_50_div10_100_YuWen_ShuXue_YingYu(k,col)=size(MatDoubleA(MatDoubleA(:,col)>=score & MatDoubleA(:,col)<score+10,:),1);
end
if(col==1)
kemu = '语文';
else if (col==2)
kemu = '数学';
else if (col==3)
kemu = '英语';
end
end
end
disp([kemu,'在',num2str(score),'-',num2str(score+10),'分人数:',num2str(Count_50_div10_100_YuWen_ShuXue_YingYu(k,col))]);
k=k+1;
end
end
语文最高分:97,学号:11
数学最高分:98,学号:63
英语最高分:98,学号:86
语文最低分:1,学号:1
数学最低分:0,学号:78
英语最低分:0,学号:52
总分最高:240,学号:36
总分最低:25,学号:89
语文在50-60分人数:12
语文在60-70分人数:7
语文在70-80分人数:15
语文在80-90分人数:11
语文在90-100分人数:4
数学在50-60分人数:7
数学在60-70分人数:11
数学在70-80分人数:7
数学在80-90分人数:10
数学在90-100分人数:10
英语在50-60分人数:14
英语在60-70分人数:9
英语在70-80分人数:9
英语在80-90分人数:7
英语在90-100分人数:10