#include <stdio.h>
int main ( )
int i,j;
for (i=0;i<3;i++,i++) {
for(j=4;j>=0;j--;){
if (j+i)%2) {
j--;
printf("%d,",j);
continue;
}
++i;
j--;
printf("%d,",j);
}
}
return 0;
}
修改如下,供参考:
#include <stdio.h>
int main ( )
{
int i,j;
for (i=0;i<3;i++,i++){
for(j=4;j>=0;j--){
if ((j+i)%2) {
j--;
printf("%d,",j);
continue;
}
++i;
j--;
printf("%d,",j);
}
}
return 0;
}
首先,i=0;j=4; (j+i)%2=0不满足if,所以执行if后面的++i;j--;,此时i=1;j=3;输出j,也就是3
接着,i=1;j=3;进入第二层的第二次循环,j--,此时i=1;j=2; (j+i)%2=1满足if,j--,此时j=1;输出j,也就是1,
然后continue;进入第二层的第三次循环,j--,此时i=1;j=0;(j+i)%2=1满足if,j--,此时j=-1;输出j,也就是-1,
然后continue;进入第一层的第二次循环,i++;i++;此时i=3,不满足i<3,跳出循环。
这个最好的办法,就是加个断点,一步一步的看i跟j的值,3是外面的第一次循环,里面循环的第一次,1是外面第一次,里面第二次,-1是外面第一次,里面第三次
代码有误,没法看出错误