matlab初学者例题系列1

例1.有四个数字:1,2,3,4,能组成多少个互不相同且无重复数字的三位数,各是多少?

for语句语法规则如下:

for i = 初值:增量:终值;

           语句1

           ...

           语句2

end;

如果省略的增量则默认增量为1。

matlab代码如下:

clear all;                             %清除当前工作空间中的所有变量
clc;                                   %清屏(清除命令窗口所有文本输出)
n=1;
for i=1:4;                             %百位 从1-4循环
    for j=1:4;                         %十位 从1-4循环
        for k=1:4;                     %个位 从1-4循环
            number(n,:)=[i,j,k];       %{赋值+创建数组   这是一个数组赋值 语句,即将循环得到的一组i,j,k值存入第n行。同时通过这个赋值语句,matlab会自动创建这个数组并分配适当的大小。%}
            n=n+1;                     %新增一行(每个数字组合存储为一行)
         end
    end
end

%{此时number数组中存在着一系列可能的三位数

%接下来的代码逐个检查数组元素,判断百位、十位、个位数字是否有重复

%因为删除行之后,数组的大小会改变,为了避免跳过元素,要从末尾开始倒序遍历

%在正向循环时,如果删除了当前行,后面的元素会向前移动,导致下一个访问的元素会被跳过。例如有一个3×4的矩阵,假设第二行满足条件,需要被删除。删除后原第三行成了现在的第二行,原第四行成了现在的第三行,那么下一个访问的就是现第三行(原第四行),而非预期的原第三行。%}



for m=n-1:-1:1                         %因为n=n+1,所以到444后,n会自动多加一行
    if(number(m,1)==number(m,2))||(number(m,1)==number(m,3))||(number(m,2)==number(m,3))
     number(m,:)=[];                   %如果一行中,有两个数字相等,则删除该行
    end
end
num = number(:,1)*100+number(:,2)*10+number(:,3);%将三个数字转换为三位数,缺省了行,但仍会一一对应
for i = 1:length(num)
    fprintf('%d\n', num(i))  %          %{d表示输出整数,\n是换行符。(在 fprintf 函数中,格式字符串和变量的相对位置不会影响输出结果的格式。)%}
end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值