📜  仅使用putchar()在C中打印long int

📅  最后修改于: 2021-05-25 22:48:37             🧑  作者: Mango

编写一个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基础课程》。