代码之家  ›  专栏  ›  技术社区  ›  wrut

为什么我的ft\u print\u comb函数不提供任何输出?

  •  0
  • wrut  · 技术社区  · 2 年前
    #include<stdio.h>   
    #include<unistd.h>
    
    void ft_putchar(char x){
        write(1, &x, 1);
    }
    void ft_print_comb()
    {
        char i, j, k;
        i = '0';
        while(i <= 7){
            i++;
            j = i+1;
            while(j <= 8){
                j++;
            
                k = j+1;
                while(k <= 9){
                    k++;
                        ft_putchar(i);
                        ft_putchar(j);
                        ft_putchar(k);
                        ft_putchar(',');
                        ft_putchar(' ');
                }
                }
            }
    }
    int main(){
        ft_print_comb();
        return 0;
    }
    

    我试着做了几次修改,但要么破坏了代码,要么一直没有输出。我想做的是创建一个函数,显示三个不同数字的所有不同组合 升序,按升序列出。不允许使用for循环和printf函数。

    2 回复  |  直到 2 年前
        1
  •  0
  •   Unmitigated    2 年前

    因为您正在使用 char s、 您应该与字符文字而不是整数进行比较。例如 while 从不输入循环,因为“0”的ASCII代码为48,大于7。

    while (i <= '7') {
        j = i + 1;
        while (j <= '8') {
            k = j + 1;
            while (k <= '9') {
                ft_putchar(i);
                ft_putchar(j);
                ft_putchar(k);
                ft_putchar(',');
                ft_putchar(' ');
                k++;
            }
            j++;
        }
        i++;
    }
    
        2
  •  0
  •   jmq    2 年前

    i是一个值为48的字符(ASCII码为“0”),因此从不输入while循环。将i设置为:

    i = 0;