编写一个显示三个不同数字的所有不同组合的函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (65)

我的函数my_putchar

#include <unistd.h>
void my_putchar(char c)
{
    write(1, &c, 1);
}

我的函数my_print_comb

#include <unistd.h>
int my_putchar(char c);
void my_print_comb(void)
{
    int i;
    int j;
    int k;
    for(i = 48; i <= 57; ++i)
    {
        my_putchar(i);
        for(j = 48; j <= 57; ++j)
        {
            for(k = 48; j <= 57; ++k)
            {
            }
        }
    }
}

my_putchar(',');
my_putcahr(' ');
my_putchar('\n');
}

我的主要人物:

#include <unistd.h>
int my_print_comb(void);
int main ()
{
    my_print_comb();
    return (0);
}

所以我想用./ex |来编写所有组合 猫-e

the combi 012, 013, 014, ..., 789$

我尝试使用这个功能,但我只写了一个像:@ ^的bug

提问于
用户回答回答于

你的内循环正在测试错误的变量。您没有在内循环中打印三位数。我还切换到使用字符常量'0'和'9',以便更容易阅读和错误检查代码。(我认为拼写错误putcahr不在原始代码中。)

编辑补充:对不起,我在问题中错过了“不同”这个词。我将保留其确切的实现作为读者的练习,因为您没有发布任何试图检查它的代码。但是if在内部代码块周围添加一个检查应该这样做:if(test){my_putchar(i); my_putchar(j);...}

void my_print_comb(void)
{
    int i;
    int j;
    int k;
    for(i = '0'; i <= '9'; ++i)
    {
        for(j = '0'; j <= '9'; ++j)
        {
            for(k = '0'; k <= '9'; ++k) // k, not j, is tested against '9'
            {
                my_putchar(i);
                my_putchar(j);
                my_putchar(k);
                my_putchar(',');
                my_putchar(' ');
            }
        }
    }
}

扫码关注云+社区

领取腾讯云代金券