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

时间:2018-10-22 18:24:48

标签: c bash function

我的函数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 |顺序写所有的combi。猫-e

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

我尝试使用此功能,但是我只写了如下错误:A @ ^

1 个答案:

答案 0 :(得分:0)

您的内部循环正在针对错误的变量进行测试。您没有在内部循环中打印三个数字。我还改用了字符常量“ 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(' ');
            }
        }
    }
}