如何仅借助于putchar打印整数我想不使用外部存储器。
这个问题是去年在一次采访中提出的。

最佳答案

当面对面试的模糊要求时,表达你的假设是个好主意。
我认为关于只能使用putchar的要求意味着它是唯一允许我调用的库函数。我进一步假设“没有外部存储”意味着我不能显式地创建缓冲区如果面试官同意我的假设,我会继续:

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    if (n / 10 != 0)
        pr_int(n / 10);
    putchar((n % 10) + '0');
}

如果面试官随后评论说n = -n;会因为INT_MIN而失败,如下所述,那么我会重写为:
void pr_uint(unsigned int n) {
    if (n / 10 != 0)
        pr_uint(n / 10);
    putchar((n % 10) + '0');
}

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    pr_uint((unsigned int) n);
}

关于c - putchar可以打印整数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11975780/

10-12 14:47