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

如何减少实现01图案输出的C程序的编译token数量

优化方案

你可以通过合并冗余声明、简化判断逻辑的方式减少token数量,修改后代码如下:

#include <stdio.h>
int main()
{
    int rows, i, j;
    scanf("%d", &rows);
    for(i = 0; i < rows; i++) {
        for(j = 0; j <= i; j++)
            printf(j == 0 || i == j || i == rows - 1 ? "1 " : "0 ");
        printf("\n");
    }
    return 0;
}

如果你的编译环境支持C99及以上标准,还可以省略main函数末尾的return 0进一步压缩token:

#include <stdio.h>
int main()
{
    int rows, i, j;
    scanf("%d", &rows);
    for(i = 0; i < rows; i++) {
        for(j = 0; j <= i; j++)
            printf(j == 0 || i == j || i == rows - 1 ? "1 " : "0 ");
        printf("\n");
    }
}

优化说明

  • 合并变量声明:将原本分开写的int rows;和int i,j;合并为一条声明语句,减少1个int关键字对应的token。
  • 简化条件判断:原代码的多分支if-else逻辑本质是三个满足就输出1的条件,用三目运算符替换后直接去掉了4个分支的大括号、多组if/else if关键字,大幅减少token数量。
  • 调整换行逻辑:将原本嵌在分支内的换行操作移到内层循环结束后执行,省去了分支内重复的printf("1 \n")调用,减少字符串常量、函数调用相关的token。

以上修改后token数量可降至95左右,完全满足102以下的要求,运行输出和原代码完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:00