C Programa para imprimir todos los dígitos de un número dado

Dado un número N , la tarea es escribir un programa en C para imprimir todos los dígitos del número N en su orden original.

Ejemplos:

Entrada: N = 12
Salida: 1, 2

Entrada: N = 1032
Salida: 1, 0, 3, 2

Método 1: La forma más sencilla de hacerlo es extraer los dígitos uno por uno e imprimirlo.

  1. Extraiga el último dígito del número N por N%10 y almacene ese dígito en una array (digamos arr[] ).
  2. Actualice el valor de N por N/10 y repita el paso anterior hasta que N no sea igual a 0 .
  3. Cuando se hayan extraído y almacenado todos los dígitos, recorra la array desde el final e imprima los dígitos almacenados en ella.

A continuación se muestra la implementación del enfoque anterior:

// C program of the above approach
  
#include <stdio.h>
#define MAX 100
  
// Function to print the digit of
// number N
void printDigit(int N)
{
    // To store the digit
    // of the number N
    int arr[MAX];
    int i = 0;
    int j, r;
  
    // Till N becomes 0
    while (N != 0) {
  
        // Extract the last digit of N
        r = N % 10;
  
        // Put the digit in arr[]
        arr[i] = r;
        i++;
  
        // Update N to N/10 to extract
        // next last digit
        N = N / 10;
    }
  
    // Print the digit of N by traversing
    // arr[] reverse
    for (j = i - 1; j > -1; j--) {
        printf("%d ", arr[j]);
    }
}
  
// Driver Code
int main()
{
    int N = 3452897;
  
    printDigit(N);
    return 0;
}
Producción:

3 4 5 2 8 9 7

Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(log 10 N)

Método 2: Usar recursividad

  1. Iterar recursivamente hasta que N se convierta en 0:
    • Caso base: si el valor de N es 0 , salga de la función.
      if(N==0) 
        return ;
      
    • Llamada recursiva: si no se cumple el caso base, llame recursivamente para la siguiente iteración actualizando N a N/10 e imprima el valor del último dígito extraído (digamos r ) del número N , después de la llamada recursiva.
      recursive_function(N/10);
      print(r);
      

A continuación se muestra la implementación del enfoque anterior:

// C program of the above approach
  
#include <stdio.h>
  
// Function to print the digit of
// number N
void printDigit(int N)
{
    int r;
  
    // Base Case
    if (N == 0) {
        return;
    }
  
    // Extract the last digit
    r = N % 10;
  
    // Recursive call to next
    // iteration
    printDigit(N / 10);
  
    // Print r
    printf("%d ", r);
}
  
// Driver Code
int main()
{
    int N = 3452897;
  
    printDigit(N);
    return 0;
}
Producción:

3 4 5 2 8 9 7

Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por Code_r 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 *