如何在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; }
实现说明
- 代码复用:将每行的打印逻辑单独封装为函数,每个函数接收尺寸参数
s,负责输出对应行的内容,彻底消除原代码中的重复逻辑。 - 对称输出:在
main函数中先按顺序输出前5行,再反向调用第4到第1行的打印函数,直接满足第6-9行与第4-1行内容一致的要求。 - 可维护性:后续若需修改某一行的样式,只需修改对应的函数即可,无需在多处重复修改相同逻辑,代码可读性和维护性大幅提升。
内容的提问来源于stack exchange,提问作者AC7
相关产品推荐
相关产品推荐

