关于C中for多重循环执行循序问题?逻辑顺序我弄不清,请大家帮帮我~

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:10:12
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。

#include<stdio.h>
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++) /*以下为三重循环*/ 1
for(j=1;j<5;j++) 2
for (k=1;k<5;k++) 3
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
}
请问题中我用1 2 3标明的3个for循环执行顺序到底是怎样的啊?

前面的2个for没有跟语句,就代表只做自加1运算是吗?

是先把1执行一遍,然后往下把2执行一遍,接着把3执行一遍呢?还是1先执行4遍,然后2执行4遍,接着3执行4遍?
回答者:chichujn - 都司 七级 6-6 16:28
VC中运行结果是123 124 132 134 142 143 213 214 231 234...412 413 421 423 431 432

for(i=1;i<5;i++)
{
for(j=1;j<5;j++) //此循环在他的上级循环执行时,每次都要执行4次
{ 它执行一次!下级循环要执行4次
for (k=1;k<5;k++) //此循环在他的上级循环执行时,每次都要执行4次
{
if (i!=k&&i!=j&&j!=k)
printf("%d,%d,%d\n",i,j,k);
}
}
}

程序是从i=1;j=1;k=1;开始的!
顺序为:
111;112;113;114;121;122;123;;124;131;132;133;134;.....441;442;443;444;
多重循环是从最外面的循环开始执行,但每次都是把里面的循环先执行完;一级一级下去就可以了;

for(i=1;i<5;i++)
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k)
printf("%d,%d,%d\n",i,j,k);
}
正规写法是这样的:
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k)
printf("%d,%d,%d\n",i,j,k);
}
}
}
其中两套括号省略掉了.
for(i=1;i<5;++i)
{
...
}
执行顺序为
i=1;
if(i<5)