用matlab怎么做下面这道题?
任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算10次。...
任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算10次。
展开
展开全部
function [out1]=m1deng(in)
if (in<10000)&&(in>999)
for i=1:10
A(1)=mod(in,1000);
B(1)=fix(in/1000);
A(2)=mod(A(1),100);
B(2)=fix(A(1)/100);
A(3)=mod(A(2),10);
B(3)=fix(A(2)/10);
A(4)=mod(A(3),1);
B(4)=fix(A(3)/1);
C=perms(B);
D=C(:,1).*1000+C(:,2).*100+C(:,3).*10+C(:,4).*1;
D_min=min(D);
D_max=max(D);
E=D_max-D_min;
in=E
end
out1=in;
else
disp('the input is wrong');
out1=0;
end
end
if (in<10000)&&(in>999)
for i=1:10
A(1)=mod(in,1000);
B(1)=fix(in/1000);
A(2)=mod(A(1),100);
B(2)=fix(A(1)/100);
A(3)=mod(A(2),10);
B(3)=fix(A(2)/10);
A(4)=mod(A(3),1);
B(4)=fix(A(3)/1);
C=perms(B);
D=C(:,1).*1000+C(:,2).*100+C(:,3).*10+C(:,4).*1;
D_min=min(D);
D_max=max(D);
E=D_max-D_min;
in=E
end
out1=in;
else
disp('the input is wrong');
out1=0;
end
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询