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

C 語言控制台圖形打印:菱形星號圖案生成算法

     編輯:關於C

問題描述

輸入奇數行數 n,打印對稱菱形。例如 n=7:

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

算法分析

菱形可分為上半部(含中線)與下半部:

  • 第 i 行(1-based,上半部 1 ≤ i ≤ (n+1)/2):
    空格數 = (n-1)/2 - (i-1),星號數 = 2*i - 1;
  • 第 i 行(下半部 1 ≤ i ≤ (n-1)/2):
    空格數 = i,星號數 = n - 2*i。

完整代碼

#include <stdio.h>

int main() {
    int n;
    printf("請輸入菱形行數 (奇數): ");
    scanf("%d", &n);
    if (n % 2 == 0) { printf("請輸入奇數!\n"); return 1; }

    int half = (n + 1) / 2;
    // 上半部含中線
    for (int i = 1; i <= half; ++i) {
        for (int s = 0; s < half - i; ++s) putchar(' ');
        for (int s = 0; s < 2*i - 1; ++s) putchar('*');
        putchar('\n');
    }
    // 下半部
    for (int i = 1; i < half; ++i) {
        for (int s = 0; s < i; ++s) putchar(' ');
        for (int s = 0; s < n - 2*i; ++s) putchar('*');
        putchar('\n');
    }
    return 0;
}

運行示例

$ ./diamond
請輸入菱形行數 (奇數): 13
      *
     ***
    *****
   *******
  *********
 ***********
*************
 ***********
  *********
   *******
    *****
     ***
      *

擴展思路

  • 支持偶數行(雙中線);
  • 改用單循環 + 數學公式計算每行星號數:stars = n - 2 * abs(i - half);
  • 封裝為函數 printDiamond(int n, FILE *out) 支持重定向輸出。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved