#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加上大括号标明语句范围是良好习惯。