为什么我的 for 循环不能正常工作 (C)?

Why won't my for loop work correctly (C)?

你好,我正在编写一个程序,使用 for 循环和 printf 绘制不同的形状。最后一个形状是菱形,也是唯一一个不能正常工作的形状。用户输入一个介于 1 和 10 之间的奇数整数,这是中间行中的字符数。我将代码分成两部分,顶部和底部。如果用户输入 7,菱形的底部是唯一不起作用的部分,输出应该是:

  hhhhh
   hhh
    h

但是,代码只输出一行:

   hhhhh

除了声明变量之外,这是我的下半部分代码:

#include <stdio.h>
int main(){
        int i,j,space,dots,diamond;
        diamond=7;
        space = 1;
        dots = diamond - 2 ;

        for( j = 0; j < diamond/2 ; j++){

            for(i = 0; i < space; i++){
                 printf(" ");
            }
        
            for(j = 0 ; j < dots ; j++){
                 printf("h");
            }
           
            dots = dots - 2;
            space++;
            printf("\n");

        } 

return 0;
}
      
             

有什么想法吗?

您正在使用 j 两次。

for( j = 0; j < diamond/2 ; j++)
/* ...*/
for(j = 0 ; j < dots ; j++){

第二次使用后,第一次循环的条件不再满足,
这就是它只执行一次的原因。
通过一致的缩进,您更有可能发现这一点。

当我将第二个内部循环中的 j 替换为 i 时,我得到了“7”所需的输出。