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

优化C语言数字星号图案输出代码:精简冗余方案咨询

数字星号图案程序的优化建议

因为看不到你代码截图,我先基于这类需求下新手常写的冗余/低效代码来分析,再给出精简方案:

常见冗余/低效问题

  • 重复循环结构:不少新手会给每行单独写数字输出和星号输出的循环,甚至把每行的输出逻辑复制粘贴,导致代码重复度极高。
  • 硬编码数值:比如直接把总行数、每行的星号数写死成具体数字,后续要修改图案规模得改好几处。
  • 不必要的变量开销:比如在每行循环外重复定义临时变量,或者用字符串数组存储每行内容再输出,浪费内存。

精简优化后的代码

#include <stdio.h>

int main() {
    const int total_lines = 10; // 把总行数做成常量,改起来方便
    for (int line = 1; line <= total_lines; line++) {
        // 输出当前行的数字序列
        for (int num = 1; num <= line; num++) {
            printf("%d", num);
        }
        // 计算星号数量:最后一行总长度是11(12345678910),前9行数字占line位,第10行数字占11位
        int ast_count = (line == 10) ? 0 : 11 - line;
        for (int i = 0; i < ast_count; i++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

优化点说明

  • 抽象常量:用total_lines统一控制行数,要改成输出5行或者15行,只改这一个值就行。
  • 整合循环逻辑:外层循环控制行数,内层分别处理数字和星号,避免重复写多行几乎一样的代码。
  • 动态计算星号数:考虑到第10行的10占2个字符,单独处理这个情况,不用给每行硬编码星号数量。
  • 减少内存浪费:直接逐字符输出,不用先把整行内容存在字符串里再打印,内存占用更低。

如果你的原代码里还有其他问题(比如用puts拼接字符串、重复调用相同的打印逻辑),可以补充代码内容再细化优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:58:29