总结:双重for循环打印类三角形的图形

1,外层控制行数,内层控制列数。

2,当列数与行数挂钩时:

  先判断行数与要打印的东西有无关系,

  若有,依情况分析。(如 九九乘法表)

int main(void)
{
    //1*1在左上角
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= i ; j++)
        {
            printf("%dx%d=%d ", j, i, i*j);
        }
        printf("\n");
    }

    //1*1在左下角
    for (int i = 9; i >= 1; i--)
    {
        for (int j = 1; j <= i ; j++)
        {
            printf("%dx%d=%d ", j, i, i*j);
        }
        printf("\n");
    }

    //1*1在右上角      
    for (int i = 1; i <= 9; i++)  
    {
        for (int j = 9; j >i; j--) //打印空格   
        {
            printf("\t"); 
        }
        for (int k = i; k >= 1; k--) //打印式子      
        {
            printf("%dx%d=%2d  ", i, k, i*k);
        }
        printf("\n");
    }

    //1*1在右下角
    for (int i = 9; i >= 1; i--)
    {
        for (int j = 9; j > i; j--) //打印空格      
        {
            printf("\t");
        }
        for (int k = i; k >= 1; k--) //打印式子      
        {
            printf("%dx%d=%2d  ", i, k, i*k);
        }
        printf("\n");
    }

    system("pause");
}

 就像里面的    //1*1在左下角  外层循环初始条件已经被限定为 9了。

  若无,本人习惯 默认外层循环递增(当然也可以外层循环递减,只是内层循环要反过来)

  于是,若无

    1,控制列数递增。

      首先,外层循环递增,设好内层循环变量,再让内层循环的结束条件与外层循环变量挂钩。然后内层循环变量递增

    2,控制列数递减。

      首先,外层循环递增,设好内层循环变量,再让内层循环的结束条件与外层循环变量挂钩。然后内层循环变量递减

 //       *
 //     * * *
 //   * * * * *
 // * * * * * * *
 //   * * * * *
 //     * * *
 //       *
int main(void)
{
    int i = 0;
    int j = 0;
    int k = 0;
    for (i = 0; i < 4; i++)    //4代表有4行
    {
        for (j = 0; j < 7-2*i; j++)   //7代表第一行有7个    2代表每行差2个
        {
            printf(" ");
        }
    // for (j = 7 - 2 * i - 1; j >= 0; j--) //当然,初始条件不同,自然是要反过来
     // {
      //  printf(" ");
      // }
for (k = 0; k < 1 + 2 * i; k++) { printf("* "); } printf("\n"); } for (i = 0; i < 3; i++) { for (j = 0; j < 3+2*i; j++) { printf(" "); } for (k = 0; k <=4-2*i; k++) { printf("* "); } printf("\n"); } system("pause"); return 0; }

 注意这里与九九的区别,这里的递增是递增2的,对此可以控制循环增量,我用的是控制终止条件。

 

另外是打印随意行数菱形(有奇数偶数之分):

int main(void)
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        int m = (n + 1) / 2;
        for (int i = 1; i <= m; i++)
        {
            for (int j = 1; j <= m - i; j++)
            {
                printf("  ");
            }
            for (int k = 1; k < 2 * i; k++)
            {
                printf("* ");
            }
            printf("\n");
        }
        for (int i = 1; i <= m; i++)
        {
            for (int j = 1; j <= i - (n + 1) % 2; j++)
            {
                printf("  ");
            }
            for (int k = 1; k < 2 * m - 2 * i + 2 * ((n + 1) % 2); k++)
            {
                printf("* ");
            }
            printf("\n");
        }

    }
    
    system("pause");
    return 0;
}

 

 

 

 

 

 

     

  

  

  

你可能感兴趣的:(总结:双重for循环打印类三角形的图形)