Imprime un int largo en C usando putchar() solamente

Escriba una función de C print(n) que tome un número entero largo n como argumento y lo imprima en la consola. La única función de biblioteca permitida es putchar() , no se permite ninguna otra función como itoa() o printf() . Tampoco se permite el uso de bucles.

Recomendamos encarecidamente minimizar el navegador y probarlo usted mismo primero.

Esta es una simple pregunta capciosa. Dado que putchar() imprime un carácter, debemos llamar a putchar() para todos los dígitos. La recursión siempre se puede usar para reemplazar la iteración, por lo que al usar la recursión podemos imprimir todos los dígitos uno por uno. Ahora la pregunta es putchar() imprime un carácter, cómo imprimir dígitos usando putchar(). Necesitamos convertir cada dígito a su valor ASCII correspondiente, esto se puede hacer usando el valor ASCII de ‘0’. A continuación se muestra el programa C completo.

C

/* C program to print a long int number
 using putchar() only*/
#include <stdio.h>
 
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 above function
int main()
{
    long int n = 12045;
    print(n);
    return 0;
}

Producción: 

12045

Complejidad de tiempo : O (logn)

Espacio auxiliar: O (logn)

Una cosa importante a tener en cuenta es la secuencia de putchar() y la llamada recursiva print(n/10). Dado que los dígitos deben imprimirse de izquierda a derecha, la llamada recursiva debe aparecer antes de putchar() (el dígito más a la derecha debe imprimirse al final, todos los demás dígitos deben imprimirse antes).

Este artículo es una contribución de Abhay Rathi . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *