用Matlab编写程序,求四位数
一个四位数的千位数等于这个数零的个数,百位数等于这个数1的个数,十位数等于这个数2的个数,个位数等于这个数3的个数...
一个四位数的千位数等于这个数零的个数,百位数等于这个数1的个数,十位数等于这个数2的个数,个位数等于这个数3的个数
展开
2个回答
展开全部
下面是我写的程序,我的思路最简单的搜索法,是这样的:
1、搜索的范围为1000-9999;
2、用一个循环查找每一个符合的数。
3、做一个判断一个数时否符合条件的子程序。
4、在判断子程序中,对这个数做除10取余,得到每一位数,并统计总数。然后做判断。
下面是程序
主程序
number = []; % 最后得到符合条件的数
for i = 1000:9999
tt=numweigh(i);
if tt == 1
number = [number;i];
end
end
判断子程序
function panjue = numweigh(x)
% % get the number of every weight position
panjue = 0;
if x < 0
fprintf('Please input positive integer.\n')
return;
else
number=zeros(10,1);
tmp =x;
for ii = 1:4
shuzi(ii) =mod(tmp,10);
tmp2 = shuzi(ii);
number(tmp2+1) = number(tmp2+1)+1;
tmp = floor(tmp/10);
end
if(shuzi(1) ~= number(4)) % 个位上的数字是否等于3的个数
return;
elseif (shuzi(2) ~= number(3)) % 十位上的数字是否等于2的个数
return;
elseif(shuzi(3) ~= number(2)) % 百位上的数字是否等于1的个数
return;
elseif(shuzi(4) ~= number(1)) % 千位上的数字是否等于0的个数
return;
else
panjue =1; %该数符合条件
end
end
结果
1210;2020
1、搜索的范围为1000-9999;
2、用一个循环查找每一个符合的数。
3、做一个判断一个数时否符合条件的子程序。
4、在判断子程序中,对这个数做除10取余,得到每一位数,并统计总数。然后做判断。
下面是程序
主程序
number = []; % 最后得到符合条件的数
for i = 1000:9999
tt=numweigh(i);
if tt == 1
number = [number;i];
end
end
判断子程序
function panjue = numweigh(x)
% % get the number of every weight position
panjue = 0;
if x < 0
fprintf('Please input positive integer.\n')
return;
else
number=zeros(10,1);
tmp =x;
for ii = 1:4
shuzi(ii) =mod(tmp,10);
tmp2 = shuzi(ii);
number(tmp2+1) = number(tmp2+1)+1;
tmp = floor(tmp/10);
end
if(shuzi(1) ~= number(4)) % 个位上的数字是否等于3的个数
return;
elseif (shuzi(2) ~= number(3)) % 十位上的数字是否等于2的个数
return;
elseif(shuzi(3) ~= number(2)) % 百位上的数字是否等于1的个数
return;
elseif(shuzi(4) ~= number(1)) % 千位上的数字是否等于0的个数
return;
else
panjue =1; %该数符合条件
end
end
结果
1210;2020
更多追问追答
追问
我是初学者,我看不懂啊,谢谢了!
追答
晕。那你把这个拷贝到MATLAB中去试下嘛。子程序建一个文件,保存的文件名同程序名一致;主程序建一个文件。然后在主程序界面上按F5就运行了。给个评价啊,如果这个问题解决了。我可是花了好些时间写的。冲的可是评价来的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询