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

为何我的ft_print_comb函数没有任何输出?

问题分析与修正代码

你的代码存在几个关键逻辑错误,导致无输出或逻辑异常:

  1. 循环变量自增时机错误:进入循环体前就对i、j、k执行自增,跳过了初始值的有效组合(比如i从'0'直接变成'1',丢失所有0开头的组合),同时导致循环条件判断失效。
  2. 边界输出处理缺失:所有组合后都输出逗号和空格,不符合格式要求(最后一个组合后不应有分隔符)。

以下是修正后的代码,严格遵循你的要求(仅用while循环、write输出):

#include <unistd.h>

void ft_putchar(char x){
    write(1, &x, 1);
}

void ft_print_comb()
{
    char i, j, k;
    i = '0';
    // 第一位数字范围0-7(需留两个更大的数字位置)
    while(i <= '7'){
        j = i + 1;
        // 第二位数字范围i+1到8
        while(j <= '8'){
            k = j + 1;
            // 第三位数字范围j+1到9
            while(k <= '9'){
                ft_putchar(i);
                ft_putchar(j);
                ft_putchar(k);
                // 仅当不是最后一个组合(789)时,输出分隔符
                if(!(i == '7' && j == '8' && k == '9')){
                    ft_putchar(',');
                    ft_putchar(' ');
                }
                k++;
            }
            j++;
        }
        i++;
    }
}

int main(){
    ft_print_comb();
    return 0;
}

修正说明

  • 调整i、j、k的自增位置,确保每个初始值都能进入循环处理,覆盖所有i<j<k的三位数字组合。
  • 添加边界判断,最后一个组合789输出后不再添加逗号和空格,符合格式要求。
  • 所有组合按升序排列,完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:15:38