總結:雙重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;
}

 

 

 

 ========= ======== ====== ====== ====== ===== ==== === == =

 心,若沒有棲息的地方,到哪里都是流浪

                —— 三毛

 

     

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM