随机生成100个学生的三门课程成绩存入矩阵P中,并进行如
下处理:
•分别求每门课的最高分、最低分及其相应学生学号
•三门课总分的最高分、最低分及相应学生学号
•分别统计3门课在50-59、60-69、…分数段的人数。
求解以下问题(用Matla解决)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 胸毛男 2022-06-19 23:01关注
主要用了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本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 目详情-五一模拟赛详情页
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line