在线求:改错matlab(做回文数)

来源:百度知道 编辑:UC知道 时间:2024/05/26 00:38:17
A2 回文数
对于一个自然数,若将各位数字倒序排出,加到原来的数字上,反复这样多次后,若能得到一个从左到右读与从右到左读完全一样的数,则称该自然数能产生回文数或者对称数,例如:195就可以产生一个回文数9339,因为
195+591=786
786+687=1473
1473+3741=5214
5214+4125=9339
通过编程计算,你能找出多少个能产生回文数的数,又能找出多少不能产生回文数的数?二者的最小数是多少?
帮忙看下我的程序错哪了?谢谢
n=input('n=');
t=0;
p=0;
for c=1:n
while (c>0)
t=t*10+mod(c,10);
c=c/10;
c=fix(c);
if c==t
fprintf('huiwenshu=%d\n',c);
else
c=t+c;
p=p+1;
end

if p>=100000
break;
end
end
end

function huiwen
a=input('enter a number:');
b=floor(log10(a))+1;
v=mod(floor(a./10.^(b-1:-1:0)),10);
w=fliplr(v);
if all(v==w)
error('this is a huiwen number') ;
end
p=sort(v);
q=-sort(-v);
while not(all(v-w==[0]))
n=polyval(q,10)+polyval(p,10);
c=polyval(q,10);
d=polyval(p,10);
fprintf('%d+%d=%d\n',c,d,n)
b=floor(log10(n))+1;
v=mod(floor(n./10.^(b-1:-1:0)),10);
w=fliplr(v);
p=sort(v);
q=-sort(-v);
end

我在机子上调试可以 你试试吧