You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中复用代码打印特定图形(避免重复编写行逻辑)

避免重复代码实现对称图形打印的C语言方案

要实现这种对称重复的图形打印,用函数封装每行的打印逻辑是最直接的解决方案,既避免代码重复,也方便后续维护。以下是优化后的实现:

#include <stdio.h>

// 封装每行的打印逻辑
void print_line1(int s) {
    for (int j = 1; j <= 2 * s - 1; j++) {
        if (j == s)
            printf("o");
        else
            printf("-");
    }
    printf("\n");
}

void print_line2(int s) {
    for (int j = 1; j <= 2 * s - 1; j++) {
        if (j == s + 1 || j == s - 1)
            printf("o");
        else
            printf("-");
    }
    printf("\n");
}

void print_line3(int s) {
    for (int j = 1; j <= 2 * s - 1; j++) {
        printf("o");
    }
    printf("\n");
}

void print_line4(int s) {
    for (int j = 1; j <= 2 * s - 1; j++) {
        if (j == 2 * s - 2 || j == 2)
            printf("o");
        else
            printf("-");
    }
    printf("\n");
}

void print_line5(int s) {
    for (int j = 1; j <= 2 * s - 1; j++) {
        if (j == 2 * s - 3 || j == 3)
            printf("o");
        else
            printf("-");
    }
    printf("\n");
}

int main() {
    int s;
    printf("Enter size (10-20)\n");
    scanf(" %d", &s);

    // 打印前5行
    print_line1(s);
    print_line2(s);
    print_line3(s);
    print_line4(s);
    print_line5(s);
    // 打印后4行,对应第4到第1行的重复
    print_line4(s);
    print_line3(s);
    print_line2(s);
    print_line1(s);

    return 0;
}

实现说明

  1. 代码复用:将每行的打印逻辑单独封装为函数,每个函数接收尺寸参数s,负责输出对应行的内容,彻底消除原代码中的重复逻辑。
  2. 对称输出:在main函数中先按顺序输出前5行,再反向调用第4到第1行的打印函数,直接满足第6-9行与第4-1行内容一致的要求。
  3. 可维护性:后续若需修改某一行的样式,只需修改对应的函数即可,无需在多处重复修改相同逻辑,代码可读性和维护性大幅提升。

内容的提问来源于stack exchange,提问作者AC7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:50:40