C中的3位数发生器

时间:2013-07-18 09:44:13

标签: c numbers printf putchar

我正在尝试生成每个可能的3位数组合,例如:012, 013 ,014...

但是我想忽略重复字符(如999或022),我也不想重复使用数字(如果已经123那里,不要显示321)所以,最后一个值应该是 789。

这是我的代码:

int main()
 {
    int i;
    int j;
    for(i=1;i<(1<<9);i++)
    {
        for(j=0;j<9;j++)
        {
            if ((1<<j)&i) printf("%d\n",j+1);
        }
    }
 }

我希望我的结果如下:

012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 789

另外,我不应该使用任何函数而是printf / putchar

2 个答案:

答案 0 :(得分:5)

我认为解决这个问题的最简单方法就是

for (i = 0; i <= 7; i++)
{
    for (j = i+1; j <= 8; j++)
    {
        for (k = j+1; k <= 9; k++)
        {
            printf("%d%d%d\n", i, j, k);
        }
    }
}

答案 1 :(得分:0)

你好,你是EPITECH吗?这是“鱼”工作的第3天之一 这个函数的难点在于你不能使用printf而不是“my_put_nbr”(%d printf)一个你必须明天编码的函数我猜是谁可以打印int变量 所以你必须找到一种方法,用my_putchar函数打印每个数字的每个字符 对于那些想知道的人是my_putchar函数

void my_putchar(char c)
{
write(1, &c, 1);
}