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

C语言实现两位不同数字的最小组合输出(仅用putchar)

解决方案

你的需求是输出0-9中两位不同数字的最小组合(仅保留较小的那个,如34/43只输出34)、升序排列且只能用putchar。现有代码的问题在于输出了重复数字组合(如00)和逆序组合(如34和43都输出),且使用了不符合要求的printf。

以下是修改后的代码:

#include <stdio.h>

int main(void)
{
    int a, b;
    int first = 1; // 标记是否为第一个输出组合,用于处理逗号
    
    for (a = 0; a < 9; a++) // a最大到8,因为b要大于a,最大b为9
    {
        for (b = a + 1; b < 10; b++) // b从a+1开始,保证a < b,只生成较小的组合
        {
            if (!first)
            {
                putchar(','); // 非第一个组合,先输出逗号分隔
            }
            first = 0;
            
            // 数字转字符输出:0-9的ASCII字符是连续的,'0'加数字即可得到对应字符
            putchar('0' + a);
            putchar('0' + b);
        }
    }
    putchar('\n'); // 最后输出换行
    return 0;
}

关键修改说明

  • 循环逻辑调整:内层循环从a+1开始,确保b始终大于a,这样只会生成十位小于个位的组合,自动满足升序且不会重复输出逆序对
  • 字符输出转换:利用ASCII码特性,'0' + 数字可直接得到对应数字字符,适配putchar的输出要求
  • 逗号处理:通过first标记第一个组合,避免在开头输出逗号,同时保证后续组合间用逗号分隔,最后不会多出来多余逗号
  • 移除printf:全部替换为putchar,完全符合题目要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:55:19