编写一个C函数print(n) ,它使用一个长整型数n作为参数,并在控制台上打印它。唯一允许的库函数是putchar() ,不允许使用其他函数(例如itoa()或printf()) 。也不允许使用循环。
强烈建议您最小化浏览器,然后自己尝试。
这是一个简单的技巧问题。由于putchar()打印一个字符,因此我们需要为所有数字调用putchar()。递归始终可以用来代替迭代,因此使用递归我们可以一一打印所有数字。现在的问题是putchar()打印一个字符,如何使用putchar()打印数字。我们需要将每个数字转换为其对应的ASCII值,这可以通过使用ASCII值“ 0”来完成。以下是完整的C程序。
/* C program to print a long int number
using putchar() only*/
#include
void print(long n)
{
// If number is smaller than 0, put a - sign
// and change number to positive
if (n < 0) {
putchar('-');
n = -n;
}
// Remove the last digit and recur
if (n/10)
print(n/10);
// Print the last digit
putchar(n%10 + '0');
}
// Driver program to test abvoe function
int main()
{
long int n = 12045;
print(n);
return 0;
}
输出:
12045
需要注意的重要一件事是putchar()和递归调用print(n / 10)的顺序。由于这些数字应从左到右打印,因此递归调用必须出现在putchar()之前(最右边的数字应打印在末尾,所有其他数字必须在其打印前)。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。