如何仅借助于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/