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

C 語言圖形輸出:星號金字塔等幾何圖案的循環邏輯與坐標幾何方法

     編輯:關於C語言

問題描述

輸出星號金字塔圖案(高 5 行)。核心考點:雙層循環行列控制、幾何不等式判斷打印區域、空格與星號交替。

原代碼:幾何不等式法


#include 

const int NUM = 5;

int main() {
    for (int i = 1; i <= NUM; i++) {          // 行 1~5
        for (int j = 1; j < 2*NUM; j++) {     // 列 1~9 (2*5-1)
            // 金字塔區域: NUM-i+1 <= j <= NUM+i-1
            if (j >= NUM - i + 1 && j <= NUM + i - 1)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

幾何不等式推導

第 i 行 (1-indexed):

  • 星號數 = 2i - 1
  • 左邊界 = 中心 - (i-1) = NUM - i + 1
  • 右邊界 = 中心 + (i-1) = NUM + i - 1
  • 條件:j >= NUM-i+1 && j <= NUM+i-1

輸出效果 (NUM=5)

    *    
   ***   
  *****  
 ******* 
*********

三種實現方式對比

方法核心邏輯優點適用場景
幾何不等式 (原版)單雙層循環 + 區域判斷統一框架,易修改形狀 (菱形、三角、圓)複雜幾何圖案
分段打印打印空格、打印星號、換行直觀、無分支預測失敗、效率高簡單幾何、教學演示
字符串構造sprintf/填充字符串減少 I/O 調用、易對齊大圖案、緩衝輸出

分段打印版 (最高效、最直觀)


void print_pyramid_segments(int n) {
    for (int i = 1; i <= n; i++) {
        // 前導空格: n-i
        for (int s = 0; s < n - i; s++) printf(" ");
        // 星號: 2i-1
        for (int s = 0; s < 2*i - 1; s++) printf("*");
        printf("\n");
    }
}

菱形擴展 (幾何不等式法易擴展)


void print_diamond(int n) {
    // 上半部金字塔
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= 2*n-1; j++)
            if (j >= n-i+1 && j <= n+i-1) printf("*");
            else printf(" ");
        printf("\n");
    }
    // 下半部倒金字塔
    for (int i = n-1; i >= 1; i--) {
        for (int j = 1; j <= 2*n-1; j++)
            if (j >= n-i+1 && j <= n+i-1) printf("*");
            else printf(" ");
        printf("\n");
    }
}

圓形擴展 (勾股定理判斷)


void print_circle(int r) {
    for (int y = -r; y <= r; y++) {
        for (int x = -r; x <= r; x++) {
            if (x*x + y*y <= r*r) printf("*");
            else printf(" ");
        }
        printf("\n");
    }
}

總結

星號金字塔是「雙層循環、幾何區域判斷、分段打印優化」的綜合練習。關鍵收穫:

  • 幾何不等式法**統一框架**支撐金字塔、菱形、圓形等任意隱式曲線;
  • 分段打印法**無分支、效率最高**,簡單圖案首選;
  • 行號 i、列號 j 與幾何座標映射是核心建模技能;
  • 字符串構造 + 單次 printf 減少系統調用,大圖案優勢明顯;
  • 擴展思維:不等式 → 隱式函數 → 參數方程,統籌圖形學基礎。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved