C語言---打印空心菱形


首先找出上尖三角形的空格和*之間的規律,利用for循環的嵌套來輸出上尖三角形,if是用來判斷是否輸出到最后一個*號,如果是就換行。

    int n = 4;
  
    for(int i = 1 ; i <= n ; i++){
        for(int j = n - i ; j > 0 ; j-- ){  // n - 1 為每一行需要輸出的空格數量
            printf(" ");
        }
        for(int x = 1 ; x <= 1+(2*(i-1)) ; x++) //1+(2*(i-1)) 為每一行需要輸出的*數量
        {
            printf("*");
            if(x == 1+(2*(i-1)))   //判斷是否輸出到最后一個 *  如果是就換行
            {
                printf("\n");
            }
        }
    }

然后再補齊下半部分三角,需要注意的是上面的三角形是n = 4 行,但是下部分只需要三行

    for(int x = 1 ; x < n ; x++){
        for(int j = 1 ; j <= x ; j++){
            printf(" ");
        }
        for(int y = 1+(n - x -1)*2 ; y > 0; y--){
            
            printf("*");
            if(y-1 == 0)
            {
                printf("\n");
            }

        }
    }

到這里為止,我們已經打印好了實心的菱形,行數為n*2 -1 行。接下來只需要把實心挖空就可以輸出空心菱形。

int n = 4;
    
    for(int i = 1 ; i <= n ; i++){
        for(int j = n - i ; j > 0 ; j-- ){
            printf(" ");
        }
        for(int x = 1 ; x <= 1+(2*(i-1)) ; x++)
        {
            if(1 == x || x == 1+(2*(i-1))) {
                printf("*");
            }else{
                printf(" ");
            }
            
            if(x == 1+(2*(i-1)))
            {
                printf("\n");
            }
        }
    }
    
    for(int x = 1 ; x < n ; x++){
        for(int j = 1 ; j <= x ; j++){
            printf(" ");
        }
        for(int y = 1+(n - x -1)*2 ; y > 0; y--){
            
            if(y == 1+(n - x -1)*2 || y-1 == 0) {
                printf("*");
            }else{
                printf(" ");
            }
            if(y-1 == 0)
            {
                printf("\n");
            }
            
        }
    }

這段代碼和上面的區別就在於 輸出*的for循環中加入了一個來if判斷 ,if輸出第一個*和最后一個*的時候按照 *來輸出,如果是其他位置不輸出*而是輸出空格“ ”,這樣就達到了挖空的目的


免責聲明!

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



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