【发布时间】:2020-04-06 21:02:25
【问题描述】:
我一直一个人在家,一直在学习一些 MATLAB。我想创建一个脚本,其中:
- 要求用户以 20 到 59(含)之间的数字形式输入年龄:
- 检查给定的年龄是否在范围内,如果值超出范围,程序应退出并打印出错误消息。
- 如果年龄在该范围内,程序应将值转换为等效文本(即 21 到“二十一”)
到目前为止,我已经尝试使用 fix(Age/10) 和 mod(Age,10) 将 Age 拆分为十位和单位,以获取每个数字的前缀和后缀。我已经有了它的主体,它几乎就在那里,但是我似乎无法获得我想要的输出。有人可以帮我解决这个问题吗?谢谢
Age=input('How old are you? ')
if Age<20
disp('You are too young ')
elseif Age>=20 & Age<=59
fix(Age/10);
mod(Age,10);
switch fix(Age/10)
case fix(Age/10)==2
disp('twenty')
case fix(Age/10)==3
disp('thirty')
case fix(Age/10)==4
disp('forty')
case fix(Age/10)==5
disp('fifty')
otherwise
end
switch mod(Age,10)
case mod(Age,10)==1
disp('-one')
case mod(Age,10)==2
disp('-two')
case mod(Age,10)==3
disp('-three')
case mod(Age,10)==4
disp('-four')
case mod(Age,10)==5
disp('-five')
case mod(Age,10)==6
disp('-six')
case mod(Age,10)==7
disp('-seven')
case mod(Age,10)==8
disp('-eight')
case mod(Age,10)==9
disp('-nine')
otherwise
end
elseif Age>59
disp('You are too old ')
end
【问题讨论】:
-
你快到了。您无需使用案例编号再次输入条件。例如
case fix(Age/10)==2应该只是case 2。case mod(Age,10)==1应该只是case 1。你的其他情况也是如此。请参阅documentation -
另一件事:
elseif Age>=20 & Age<=59可以简单地为elseif Age<=59。如果你得到这个else,你已经确定Age<20不是真的,没有必要再次测试它。最后一个elseif也是如此,如果可以是一个普通的else。
标签: matlab