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



