作者janice9890 (toytoy)
看板MATLAB
标题[讨论] 关於structure
时间Tue Dec 13 10:56:16 2011
最近在练习structure指令
但是却出现一点小问题 想请问高手
我的程式码是这样的
function out = exlevel(in)
if in < 60
out='不及格';
elseif in < 70
out='D';
elseif in < 80
out='C';
elseif in < 90
out='B';
elseif in < 100
out='A';
else in == 100
out='S';
end
------------------------------------------------
keyb='y';
k=1;
while keyb=='y'
st(k).id=input('请输入学生学号 = ','s');
st(k).name=input('请输入学生姓名 = ','s');
st(k).score(1)=input('请输入第一次成绩 = ');
st(k).score(2)=input('请输入第二次成绩 = ');
st(k).score(3)=input('请输入第三次成绩 = ');
avescore =floor((st(k).score(1)+st(k).score(2)+st(k).score(3))/3);
level = exlevel(avescore);
st(k).avescore=avescore;
st(k).level=level;
k=k+1;
keyb = input('继续输入资料? 请按 y ','s');
end
fprintf('\n==学号====姓名==第1次成绩==第2次成绩==第3次成绩=学期平均==评等
==\n');
for i=1:k
fprintf('%s %s%8d%10d%10d%10d
%s\n',st(i).id,st(i).name,st(i).score(1),st(i).score(2),st(i).score(3),st(i).avescore,st(i).level)
end
前面都可以执行
但是最後会出现这一段错误
??? Index exceeds matrix dimensions.
Error in ==> structure at 20
fprintf('%s%s%8d%10d%10d%10d%s\n',st(i).id,st(i).name,st(i).score(1),st(i).score(2),st(i).score(3),st(i).avescore,st(i).level)
请问我该如何修改呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.240.188.150
1F:→ DKer:你的资料存到k 但在回圈最後多跑了一次k=k+1 12/13 11:20
2F:→ DKer:for的最後一次会读不到东西 12/13 11:21
3F:→ janice9890:那我该如何修改? 12/13 11:24
4F:→ janice9890:i=1:k-1 这样吗 12/13 11:26
5F:→ DKer:应该可以 12/13 11:32
6F:→ janice9890:我改成i=1:k-1就成功了 感谢D大 12/13 17:18