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

C 語言列印菱形圖案:從固定大小到動態行數輸入的演算法演進

     編輯:關於C語言

C 語言列印菱形圖案:從固定大小到動態行數輸入的演算法演進

版本一:固定 13 行 (上 7 下 6)

#include <stdio.h>
int main() {
    // 上半部 (含中線)
    for (int i = 0; i < 7; ++i) {
        for (int s = 0; s < 6-i; ++s) putchar(' ');
        for (int k = 0; k < 2*i+1; ++k) putchar('*');
        putchar('\n');
    }
    // 下半部
    for (int i = 7; i < 13; ++i) {
        for (int s = 0; s < i-6; ++s) putchar(' ');
        for (int k = 0; k < 2*(13-i)-1; ++k) putchar('*');
        putchar('\n');
    }
    return 0;
}

版本二:動態行數 (使用者輸入)

#include <stdio.h>
int main() {
    int n;
    printf("輸入菱形行數 (奇數): ");
    scanf("%d", &n);
    if (n % 2 == 0) ++n; // 確保奇數

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

規律總結

部分行索引 i空格數星號數
上半0 ~ midmid - i2*i + 1
下半mid+1 ~ n-1i - mid2*(n-i) - 1

教學建議

  1. 先在紙上畫網格,推導公式。
  2. 固定版本理解邏輯後,泛化為變數 n。
  3. 可擴展為空心菱形、帶顏色 (ANSI 轉義碼) 等變體。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved