【问题标题】:Using ELSEIF & SWITCH/FUNCTION on MATLAB, Convert Age to Characters在 MATLAB 上使用 ELSEIF & SWITCH/FUNCTION,将年龄转换为字符
【发布时间】: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 2case mod(Age,10)==1 应该只是 case 1。你的其他情况也是如此。请参阅documentation
  • 另一件事:elseif Age&gt;=20 &amp; Age&lt;=59 可以简单地为elseif Age&lt;=59。如果你得到这个else,你已经确定Age&lt;20 不是真的,没有必要再次测试它。最后一个elseif也是如此,如果可以是一个普通的else

标签: matlab


【解决方案1】:

代码:

Age=input('How old are you? ')
if Age<20 
    disp('You are too young ')
elseif Age>=20 & Age<=59
    switch fix(Age/10)
        case 2
               fprintf('twenty')
        case 3
               fprintf('thirty')
        case 4
               fprintf('forty')  
        case 5
               fprintf('fifty')
        otherwise
         end
    switch mod(Age,10)
        case 1
             fprintf('-one')
        case 2
             fprintf('-two')  
        case 3
             fprintf('-three')
        case 4
             fprintf('-four')
        case 5
             fprintf('-five')
        case 6
             fprintf('-six')
        case 7
             fprintf('-seven')
        case 8
             fprintf('-eight')
        case 9
             fprintf('-nine')
        otherwise
          end
elseif Age>59
    disp('You are too old ')
end

对于 Switch 语句,在每种情况下,您只需输入 switch 关键字的表达式应匹配的值。

另外,使用 fprintf 而不是 disp 在同一行显示两个单词,即

三十四

而不是

三十
-四个

这是因为disp 会自动将每个输出格式化为新行,而fprintf 不会,并且可以更好地控制输出。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多