weixin_43657660
ShallWT__
采纳率0%
2018-11-10 03:42 阅读 1.0k

第一个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");
}

}


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • qq_40946921 Italink 2018-11-10 04:23

    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");
            }
        }
    }
    
    
    
    点赞 评论 复制链接分享
  • xuewangkai 银河洗剑 2018-11-13 06:42

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

    点赞 评论 复制链接分享

相关推荐