Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C in hình kim cương (Diamond Pattern) nhiều lớp

Giới thiệu

Cho số nguyên n, in ra hình kim cương với n lớp khác nhau.

Ví dụ

Input: n = 3

Output: (xem hình ảnh minh họa)

Phương pháp

  • Tổng số hàng: (2 * n) + 1
  • Khoảng trắng từ hàng 0 đến n: 2 * (n - i)
  • Khoảng trắng từ hàng n+1 đến cuối: 2 * (i - n)

Thuật toán

Hàm print_pattern(n):
  In dòng đầu: 2*n khoảng trắng + "0"
  Với i từ 1 đến 2*n-1:
    In khoảng trắng đầu dòng
    Nếu i < n: in số tăng dần 0..i%n rồi giảm dần
    Nếu i > n: in số tăng dần 0..n-(i-n) rồi giảm dần
    Nếu i == n: in 0..n rồi giảm dần
    In "0" và xuống dòng
  In dòng cuối: 2*n khoảng trắng + "0"

Hàm main:
  n = 3
  Gọi print_pattern(n)

Code C

#include <stdio.h>

void print_pattern(int n) {
    int i, j;
    // Dòng đầu
    for (i = 1; i <= n * 2; i++) printf(" ");
    printf("0\n");

    // Phần giữa
    for (i = 1; i <= (n * 2) - 1; i++) {
        // Khoảng trắng
        if (i < n) {
            for (j = 1; j <= (n - i) * 2; j++) printf(" ");
        } else {
            for (j = 1; j <= (i % n) * 2; j++) printf(" ");
        }

        // In số
        if (i < n) {
            for (j = 0; j <= i % n; j++) printf("%d ", j);
            for (j = (i % n) - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        } else if (i > n) {
            for (j = 0; j <= n - (i - n); j++) printf("%d ", j);
            for (j = (n - (i - n)) - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        } else {
            for (j = 0; j <= n; j++) printf("%d ", j);
            for (j = n - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        }
        printf("\n");
    }

    // Dòng cuối
    for (i = 1; i <= n * 2; i++) printf(" ");
    printf("0");
}

int main() {
    int n = 3;
    print_pattern(n);
    return 0;
}

Kết quả

Hình kim cương đối xứng với các lớp số tăng giảm.