如何仅在 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);
}
关于putchar() 可以打印一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975780/