m0_64766728 2022-06-19 16:15 采纳率: 50%
浏览 33
已结题

求解以下问题(用Matla解决)

随机生成100个学生的三门课程成绩存入矩阵P中,并进行如
下处理:
•分别求每门课的最高分、最低分及其相应学生学号
•三门课总分的最高分、最低分及相应学生学号
•分别统计3门课在50-59、60-69、…分数段的人数。

  • 写回答

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 已采纳回答 6月20日
  • 创建了问题 6月19日

悬赏问题

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