我认为最好的方法是手动完成代码并记下执行代码的行号以及变量如何变化。
像
L01: int k,i,j,s; // k=?, i=?, j=?, s=?
L02: scanf("%d", &k); // k=18, i=?, j=?, s=?
L03: for(i=1; // k=18, i=1, j=?, s=?
L03: i<=k; // TRUE
L04: s=0; // k=18, i=1, j=?, s=0
L05: for(j=1; // k=18, i=1, j=1, s=0
L05: j
L03: i++) // k=18, i=2, j=1, s=0
L03: i<=k; // TRUE
L04: s=0; // k=18, i=2, j=1, s=0
L05: for(j=1; // k=18, i=2, j=1, s=0
L05: j
L06: if(i%j==0) // TRUE
L07: s=s+j: // k=18, i=2, j=1, s=1
L05: j++) // k=18, i=2, j=2, s=0
L05: j
and so on ....
我需要相当长的时间,但是你应该知道如何for循环的作品很快就会看到的图案和那里。
,可以帮助你了解for循环的另一件事是要认识到
for(i=0; i
{
code...
}
相当于
i=0;
while (i
{
code...
i++;
}
BTW:
经常检查从scanf返回值 - 例如:
if (scanf("%d", &k) != 1)
{
printf("Input error! Program terminates.\n");
exit(1);
}