首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言字元圖形:單一雙重迴圈列印等腰三角形(星號圖六)

     編輯:關於C

程式碼特色

不同於前幾例的「上下分段」,本程式單一雙重迴圈完成整個等腰三角形列印(底朝上),條件判斷稍顯複雜:

if ((i<num && (j==num-i+1 || j==num+i-1)) || 
    (i==num && j>=num-i+1 && j<=num+i-1))

完整程式碼(修正語法錯誤)

#include <stdio.h>
const int num = 5;

int main()
{
    int i, j;
    for (i = num; i > 0; i--) {          // 從底部往上印
        for (j = 1; j < 2*num; j++) {
            if ( (i < num && (j == num-i+1 || j == num+i-1)) ||  // 上方空心行
                 (i == num && j >= num-i+1 && j <= num+i-1) ) { // 底部實心行
                printf("*");
            } else {
                printf(" ");
            }
        }
        printf("\n");
    }
    return 0;
}

⚠️ 原始碼中 if((i<num) br="" j="=num+i-1)) 疑為編碼錯誤,已修正。

執行輸出 (num=5)

*********   <- 第5行(底)實心
 *     *    <- 第4行空心
  *   *     <- 第3行空心
   * *      <- 第2行空心
    *       <- 第1行(頂)單點

邏輯解析

  • 外層 i 從 num 遞減至 1,對應從底到頂
  • 當 i==num(底行):列印實心區間 [1, 2*num-1]
  • 當 i<num(上方各行):僅列印左右邊緣兩點

優化建議

複雜條件建議拆解為輔助函式或中間變數,提升可讀性:

int left = num - i + 1;
int right = num + i - 1;
int isBottom = (i == num);
int isEdge = (j == left || j == right);
int isInside = (j >= left && j <= right);

if (isBottom ? isInside : isEdge) printf("*");
else printf(" ");

等腰三角形截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved