MATLAB练习题:判断二进制数中有哪些是回文数?

 讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


 将十进制数1至100转换为二进制数,判断转换后的二进制数中有哪些是回文数?要求输出一个字符矩阵,矩阵每一行的字符向量的格式为:'十进制数:转换后的二进制数',可以在每一行字符向量的末尾加上空格保证长度相等。

(提示:转换后的二进制数为字符向量类型,将这个字符向量反转顺序,如果和原来的一样就是回文数。例如'101'、'1001'都是二进制回文数)。

上面两段代码都能实现题目的要求(代码的关键差异已使用高亮标出)。在每次循环中,如果找到回文数,我们会将构造好的字符向量 tmp 添加到 res 中,左侧代码使用的是已经过时的strvcat函数,右侧代码使用的是char函数。由于拼接过程中,char函数不会忽略空字符向量'',因此右侧的代码中我们额外加入了一行代码:res(1,:) = []; 这行代码能够删除字符矩阵res中的第一行,它的第一行实际上都是空格(由空字符向量''自动添加空格形成),因此删除后不影响最终的结果。尽管使用char函数需要多加一行,但仍然建议大家使用 char 函数,这样能避免将来的兼容性问题。

细心的同学应该发现了,使用disp函数输出res时,MATLAB也会输出每行末尾的空格,尽管我们肉眼看不到它们,但将结果复制到其他位置时可能会引起不必要的麻烦。

下面我们写一段程序,它能依次输出字符矩阵cc的各行,并在输出时会自动删除各行末尾的空格。

思路:首先使用size(cc,1)得到字符矩阵cc的行数,然后对cc的每一行进行循环。在循环体中:使用cc(ii,:)获取每一行表示的字符向量,将其保存到变量c_ii中,接下来我们使用了deblank函数,这个函数可以删除c_ii末尾的空白字符,最后我们使用disp函数输出处理后的字符向量,这样输出的每一行都不会有末尾的空格。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值