原题题目
BC105菱形图案传送门 我花了好久才看懂 足以证明循环的重要性!

代码实现
#include<stdio.h>
int main()
{
int n=0;
int i=0;
int j=0;
while (scanf("%d",&n)!=EOF)
{
for( i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
printf(" ");
for(j=0;j<=i;j++)
printf("* ");
printf("\n");
}
for(i=0;i<=n;i++)
{
for(j=0;j<i;j++)
printf(" ");
for(j=0;j<=n-i;j++)
printf("* ");
printf("\n");
}
}
return 0;
}
 很有对称美!这就是数学的神奇之处!
重难突破
首先看题,发现它是个菱形,似乎咱们学过的循环,没有一次循环就能又减少又增加的吧?好像都是要么递增,要么递减。看完题解的我 感觉这题可能要分开写循环。 大的for i循环不变,里面应该是有两个循环组成的,一个负责上部分,一个负责下部分。不同的人写法不一样,有的喜欢第一个循环写的行数多一行,有的喜欢下面的多一行,这个不重要。 第一个for j循环打印菱形的上半部分。
菱形上半部分

这里j<n-i的原因是,为了让打印的空格随着 i 的增大而减小,这样就起到了菱形从上到下打印的 星号 * 越来越多,空格越来越少的作用。
下半部分
与上半部分的循环条件形成了天然的对称美!
|