📌  相关文章
📜  C程序打印给定数字的所有数字

📅  最后修改于: 2021-04-22 06:58:16             🧑  作者: Mango

给定数字N ,任务是编写一个C程序以按原始顺序打印数字N的所有数字。

例子:

方法1:最简单的方法是一一提取数字并打印出来。

  1. 提取数字N的最后一位数字N%10 ,并将该数字存储在数组中(例如arr [] )。
  2. N的值更新N / 10,然后重复上述步骤,直到N不等于0为止。
  3. 提取并存储所有数字后,从末尾遍历数组并打印存储在其中的数字。

下面是上述方法的实现:

// C program of the above approach
  
#include 
#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;
}
输出:
3 4 5 2 8 9 7

时间复杂度: O(log 10 N)
辅助空间: O(log 10 N)

方法2:使用递归

  1. 递归迭代直到N变为0:
    • 基本情况:如果N的值为0 ,则从函数退出。
      if(N==0) 
        return ;
      
    • 递归调用:如果不满足基本条件,则在递归调用之后,将N更新为N / 10并递归调用下一个迭代,并打印从数字N中提取的最后一位数字的值(例如r )。
      recursive_function(N/10);
      print(r);
      

下面是上述方法的实现:

// C program of the above approach
  
#include 
  
// 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;
}
输出:
3 4 5 2 8 9 7

时间复杂度: O(log 10 N)
辅助空间: O(1)

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。