在C中重写循环的IF语句

在C中重写循环的IF语句,c,if-statement,for-loop,iteration,C,If Statement,For Loop,Iteration,我的for循环有问题。基本上,我得到了我想要的输出,但原因是错误的。这个程序打印出来 xoxoxoxo oxoxoxox xoxoxoxo oxoxoxox xoxoxoxo oxoxoxox xoxoxoxo oxoxoxox 问题在于生产的顺序。我需要让内部循环对每个外部循环迭代8次(也迭代8次),但这并没有发生 编译器会在打印后继续返回if语句,而不是返回检查内部for循环(j) #包括 int main(){ int i; int j=0; 对于(i=

我的for循环有问题。基本上,我得到了我想要的输出,但原因是错误的。这个程序打印出来

xoxoxoxo  
oxoxoxox  
xoxoxoxo  
oxoxoxox  
xoxoxoxo   
oxoxoxox   
xoxoxoxo   
oxoxoxox
问题在于生产的顺序。我需要让内部循环对每个外部循环迭代8次(也迭代8次),但这并没有发生

编译器会在打印后继续返回if语句,而不是返回检查内部for循环(j)

#包括
int main(){
int i;
int j=0;
对于(i=1;i<9;i++){
对于(j=1;j
我假设您误解了调试器的行为,并且代码实际执行了它应该执行的操作。我无法解释为什么调试器不会跳转到for循环的头部,而是立即跳转到if。但是他们对这些事物都有不同之处:

为什么所有的空行?<代码> J <代码>code>j<5会做完全相同的事情:让内部循环迭代8次。测试
i
j
以确定是需要
'o'
还是
'x'
。您可以看到编译器的想法:)或者,当你说“它一直返回到if语句”时,你是指IDE的调试器吗?C
中关于
循环的标准习语是
for(int index=0;index
(其中
limit=8
用于你的代码)。您可以在内部循环中使用
for(int j=0;j<8;j+=2)
来强调对称性。您还可以将两个
printf()
操作组合成一个(
printf(“xo”)
而不是使用两个,或者使用
putchar()
两次)。
#include <stdio.h>

int main() {
int i;
int j = 0;

for (i = 1; i < 9; i++) {
    for (j = 1; j < i + 4 && j < 5; j++) {

        if (i % 2 == 0) {
            printf("o");
            printf("x");
        }
        else {
            printf("x");
            printf("o");
        }
    }
    printf("\n");
}
getchar();
return 0;
}