随机生成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无用
悬赏问题
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能