解释一段代码

来源:百度知道 编辑:UC知道 时间:2024/06/01 17:03:13
题干要求将1到1000中所有21的倍数存到一个一维数组里,并输出。
#include "stdio.h"
main()
{

int i,j=0,m=0;
int a[50];
for(i=1;i<=1000;i++)
if(i%21==0)
{

a[j]=i;
j++;

}
for (i=0;i<j;i++)
{

printf("%d\t",a[i]);
m++;
}

}

我不理解第二个for循环的意思,请具体解释一下,越详细越好,还有,为什么第一个for循环是i=1,第二个是i=0,i<j什么意思???谢了!!
再强调一下,我只是不是太理解这个从i=0和i<j以及m所代表的意思,至于这个for循环的执行顺序我已知道

for(表达式1; 表达式2;表达式3)
{
语句块;
}

执行顺序:

step1: 表达式1;这个仅执行一次,一般放初始化数据
step2: 判断表达式2是否成立,如果成立执行[语句块]
如果不成立退出循环
step3:语句块执行完之后,执行表达式3,然后判断表达式2是否成立
下面一直重复step2,和step3

m 是多余