void main()
{ int i,j,k,n,m,s=0;
for(i=0;i<=2;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
n=100*2+10*j+k;
m=100*k+10*j+i;
if(m>=2*n&&m<=3*n)
s++;
printf("%d ",n);
if(s%10==0)
printf("\n");
}
第三个for语句以下的语句内容是执行完for(k=0;k<=9;k++)才做吗?请大侠们给小弟整个程序的清晰分解思路
因为没有括号,因此以第一个分号为for循环的截止点。当i=0,0<2执行第二个for即当j=0,0<9,执行第三个for即当k=0,0<9,执行n=100*2+10*j+k;(结果n=100*2+10*0+0=200),接着返回第三个for执行k++(执行完后k=1),继续第三个for即1<9,n=100*2+10*j+0=200,循环.......直到k=9都是这个结果,因此返回第二个for执行j++,j<9,接着执行第三个for因为k=0因此重复执行前一次循环,但j=1,所以后两个循环的结果为n=299,执行完后两个for后,第一个for循环是使后两个for循环执行两次,最终结果是n=299,第一个for执行了3次,第二个for执行了30次,第三个for执行了300次。接着
m=100*k+10*j+i;
if(m>=2*n&&m<=3*n)
s++;
printf("%d ",n);
if(s%10==0)
printf("\n");
是顺序执行。
m=100*k+10*j+i;
if(m>=2*n&&m<=3*n)
s++;
printf("%d ",n);
if(s%10==0)
printf("\n");
是顺序执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-11-19
下面是等效的代码,for循环里面的大括号可以去掉
void main()
{
int i,j,k,n,m,s=0;
for(i=0;i<=2;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
n=100*2+10*j+k;
}
}
}
m=100*k+10*j+i;
if(m>=2*n&&m<=3*n)
s++;
printf("%d ",n);
if(s%10==0)
printf("\n");
}
这样就清楚了,同一行是同一层次的代码,缩进的上一层的子层次,举个例子
这个先执行for(j=0;j<=9;j++),i=0,然后执行
for(k=0;k<=9;k++)
n=100*2+10*j+k;
等K=10,执行i=1,依次类推。。。
两层循环会 ,第三层也会了吧。。。本回答被提问者和网友采纳
void main()
{
int i,j,k,n,m,s=0;
for(i=0;i<=2;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
n=100*2+10*j+k;
}
}
}
m=100*k+10*j+i;
if(m>=2*n&&m<=3*n)
s++;
printf("%d ",n);
if(s%10==0)
printf("\n");
}
这样就清楚了,同一行是同一层次的代码,缩进的上一层的子层次,举个例子
这个先执行for(j=0;j<=9;j++),i=0,然后执行
for(k=0;k<=9;k++)
n=100*2+10*j+k;
等K=10,执行i=1,依次类推。。。
两层循环会 ,第三层也会了吧。。。本回答被提问者和网友采纳