输出以下图案:

/*
   *     i=0
  ***    i=1
 *****   i=2
*******  i=3
 *****   i=0
  ***    i=1
   *     i=2
通过观察可以将图形分为上四行和下三行
上四行:
第一行 三空格 i=0 j=3-0-1(j从0开始)  
第二行 两空格 i=1 j=3-1-1(j从0开始)
第三行 一空格 i=2 j=3-2-1(j从0开始)
第四行  无空格 i=2 j=3-3-1(j从0开始)
综上 j=2-i
第一行  1个* i=0 k=2*0+1-1(k从0开始)
第二行  3个* i=1 k=2*1+1-1(k从0开始)
第三行  5个* i=2 k=2*2+1-1(k从0开始)
第四行  7个* i=3 k=2*3+1-1(k从0开始)
综上 k=2*i+1-1
下三行:
空格数 第一行一个令j=0 第二行两个j=1 第三行三个 令j=2 可知j与i的个数相同 则令j=i
*数 第一行为7-2*1 则令k=7-2*1-1=4 (k从0开始)
    第二行为7-2*2 则令k=7-2*2-1=2 (同理)
    第三行为7-2*3 则令k=7-2*3-1=0 (同理)
    归纳总结 :k=7-2*(i+1)-1
*/
#include <stdio.h>
int main()
{
    int i,j,k;
    for(i=0;i<=3;i++)
    {
        for(j=0;j<=2-i;j++)
        printf(" ");
        for(k=0;k<=2*i;k++)
        printf("*");
        printf(" ") ;
        /*i=0 j=2 k=0输出三个空格 一个*
        i=1 j=1 k=2  输出两个空格 三个*
        i=2 j=0 k=4  输出一个空格 五个*
        i=3 j=-1 k=6 不输出空格 六个*
        */
    }
    for(i=0;i<=2;i++)
    {
        for(j=0;j<=i;j++)
        printf(" ");
        for(k=0;k<=7-2*(i+1)-1;k++)
        printf("*");
        printf(" ");
    }
    return 0;
 }

原文地址:https://www.cnblogs.com/LiQingXin/p/12907269.html