开篇专栏分享一下学校matlab期末自测题中有点意思的题目。
题:编写一个函数,输入一个数值,返回小数点左右的数字个数。
思路
最容易能想到的是读入数字后,对该数各种对10取余,除10取整,求模等等类似这种。
让我们换个思维,求数字个数,也就是求长度,正好就有length()求长度,但是length只针对字符,所以可以把输入的数字转成字符。然后,“小数点左右两边”正好可以用切割函数返回小数点左右两边的字符,再用length函数,完美解决 😃
代码如下:
function Q1()
val = input("Please enter a number: ");
val1 = num2str(val); % 转换为字符
[left,right] = strtok(val1,'.'); % 根据小数点切割
fprintf("The length of the number's left side: %d\n",length(left));
fprintf("The length of the number's right side :%d\n",length(right)-1); % 还要减去小数点的长度1
运行结果: