题解:
- 打印图形一定是二重循环。
- 星星上面每行逐渐多,下面每行逐渐少,一定是两组二重循环,一个管上面,一个管下面。
- 上面有四行故第一重for循环条件 i < (n+1)/ 2。
- 前四行空格规律:第一行3对空格,第二行2对空格,第三行1对空格,第四行没有。7/2 = 3且i又是从0-3,于是想到n/2 - i.
- 前四行星星规律:1 3 5 7,i从0-3,于是想到2 * i + 1
- 下面以此类推。
方法一:
#include <stdio.h>
int main()
{
int n, i, j;
scanf("%d", &n);
for (i = 0; i < (n + 1) / 2; i++)
{ //前四行。
for (j = 0; j < n / 2 - i; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("* ");
printf("\n");
}
for (i = 1; i <= (n - 1) / 2; i++)
{ //后三行。
for (j = 0; j < i; j++)
printf(" ");
for (j = 0; j < n - 2 * i; j++)
printf("* ");
printf("\n");
}
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int n, i, j;
scanf("%d", &n);
for (i = 0; i < n / 2 + 1; i++)
{
for (j = 0; j < n / 2 - i; j++)
printf(" ");
for (j = 0; j < (i + 1) * 2 - 1; j++)
printf("* ");
printf("\n");
}
for (i = n / 2; i > 0; i--)
{
for (j = n / 2 - i + 1; j > 0; j--)
printf(" ");
for (j = i * 2 - 1; j > 0; j--)
printf("* ");
printf("\n");
}
return 0;
}