求救matlab大神,怎么都执行不出来.。。。。

clear; s=char('学生成绩管理系统'); t=input('请输入班级人数'); name=cell(1,t); A=0; B=0; C=0; D=0; for i=1:t name{1,i}=input('请输入学生姓名'); marks{1,i}=input('请输入学生成绩'); rank=cell(1,4); for i=1:10 a{i}=89+i; b{i}=79+i... clear; s=char('学生成绩管理系统'); t=input('请输入班级人数'); name=cell(1,t); A=0; B=0; C=0; D=0; for i=1:t name{1,i}=input('请输入学生姓名'); marks{1,i}=input('请输入学生成绩'); rank=cell(1,4); for i=1:10 a{i}=89+i; b{i}=79+i; c{i}=69+i; d{i}=59+i; end c=[d,c]; k=struct('name',name,'marks',marks,'rank',rank); for i=1:t switch k(i).marks case 100 A=A+1; k(i).rank='满分'; case a A=A+1; k(i).rank='优秀'; case b B=B+1; k(i).rank='良好'; case c C=C+1; k(i).rank='及格'; otherwise D=D+1; k(i).rank='不及格'; end end marks=cell2mat(marks);%将分数元胞数组转换成普通矩阵 rank={A,B,C,D};%各分数段人数 e=A/t;%优秀人数所占比例 f=B/t;%良好人数所占比例 g=C/t;%及格人数所占比例 h=D/t;%不及格人数所占比例 i=(A+B+C)/t;%及格率 a=max(marks);%求成绩中的最大值 b=min(marks);%求成绩中的最小值 c=sum(marks)/t;%求所有同学成绩的平均值 d=sort(marks);%将成绩按升序排列 j=std(marks,flag,dim);%求所有成绩的无偏差标准差 disp(['学生姓名','得分','等级','优秀、良好、及格、不及格人数','各等级所占比例','及格率','成绩中的最大值','成绩中的最小值','平均值','标准差','成绩按升序排列']); for i=1:t; disp([t(i).name,blanks(6),t(i).marks,blanks(6),t(i).rank,blanks(6),e,f,g,h,i,a,b,c,d,j]); end end 展开

第1个回答  2019-03-24
错误实在太多了,程序后半部分不清楚你想干什么,程序框架明显有问题,经过大量修改后至少程序现在没错了,后面的你在自己调整
clear;
s=char('学生成绩管理系统');
t=input('请输入班级人数');
name=cell(1,t);
A=0;
B=0;
C=0;
D=0;
k=struct('name','','marks',0,'rank','');
for
i=1:t
namei=input('请输入学生姓名');
marksi=input('请输入学生成绩');
marks(i)=marksi;
for
ii=1:10
a{ii}=89+ii;
b{ii}=79+ii;
c{ii}=69+ii;
d{ii}=59+ii;
end
c=[d,c];
switch
marksi
case
100
A=A+1;
ranki='满分';
case
a
A=A+1;
ranki='优秀';
case
b
B=B+1;
ranki='良好';
case
c
C=C+1;
ranki='及格';
otherwise
D=D+1;
ranki='不及格';
end
k(i).name=namei;
k(i).marks=marksi;
k(i).rank=ranki;
end
ranks={A,B,C,D};%各分数段人数
e=A/t;%优秀人数所占比例
f=B/t;%良好人数所占比例
g=C/t;%及格人数所占比例
h=D/t;%不及格人数所占比例
i=(A+B+C)/t;%及格率
a=max(marks);%求成绩中的最大值
b=min(marks);%求成绩中的最小值
c=sum(marks)/t;%求所有同学成绩的平均值
d=sort(marks);%将成绩按升序排列
j=std(marks);%求所有成绩的无偏差标准差
disp(['学生姓名','得分','等级','优秀、良好、及格、不及格人数','各等级所占比例','及格率','成绩中的最大值','成绩中的最小值','平均值','标准差','成绩按升序排列']);
for
i=1:t;
disp([k(i).name,blanks(6),k(i).marks,blanks(6),k(i).rank,blanks(6),e,f,g,h,i,a,b,c,d,j]);
end
相似回答