打印用“*”组成的菱形图案。
多组输入,一个整数(2~20)。
针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。
输入:2
输出:
* * * * * * * * *
输入:3
输出:
* * * * * * * * * * * * * * * *
输入:
4
输出:
* * * * * * * * * * * * * * * * * * * * * * * * *
思路:
首先,两层for循环是跑不掉的,最外层的for循环用来控制行数,内层的for循环用来控制空格以及* 图案.我们主要来说明内层的for循环.
刚开始上手时,最好还是用笔和纸来画一画,这样可以极大的降低我们的思维负担及思考难度.我们先处理上边的三角部分.
要先打印出空格,在打印每一行的* .如图:通过 a(行数) 与 i (外层for)之间的关系,我们推导可以得出j = 0; j(内层for)< a - i 就可以满足这个条件.不过要注意的是:条件不唯一.
图案就很简单了.
完整代码如下:
#include
int main(void)
{
int i, j, a = 0;
while(~scanf("%d", &a))
{
for(i = 0; i < a + 1; i++)
{
for(j = 0; j < a - i; j++)
{
printf(" ");
}
for(j = 0; j < i + 1; j++)
{
printf("* ");
}
printf("\n");
}
for(i = 0; i < a ; i++)
{
for(j = 0; j <= i; j++)
{
printf(" ");
}
for(j = 0; j < a - i; j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}