第一个for循环结束后第二个for不执行,当把第一个for删掉后,后面的for又会执行

#include
int main(void)
{
int i,j,n;
while(scanf("%d",&n)==1)
for(i=1;i<=n/2+1;i++)
{
for(j=1;j<=n;j++)
{
if(j==n/2+2-i||j==n/2+i)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
for(i=n/2+2;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j==i-n/2||j==n+n/2+1-i)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}

}


whlie后面漏了花括号,不加的话,只会把下面第一条语句放在while内

 #include<stdio.h>
#include<iostream>
using namespace std;

int main(void)
{
    int i, j, n;
    while (scanf("%d", &n) == 1) {
        for (i = 1; i <= n / 2 + 1; i++)
        {
            for (j = 1; j <= n; j++)
            {
                if (j == n / 2 + 2 - i || j == n / 2 + i)
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }
            printf("\n");
        }
        for (i = n / 2 + 2; i <= n; i++)
        {
            for (j = 1; j <= n; j++)
            {
                if (j == i - n / 2 || j == n + n / 2 + 1 - i)
                {
                    printf("*");
                }
                else
                {
                    printf(" ");
                }
            }
            printf("\n");
        }
    }
}


while后面不加大括号,那么while循环体默认是后面那一行语句,即第一个for循环。和if语句一样。
写while和if加上大括号标明语句范围是良好习惯。