给定数字N ,任务是编写一个C程序以按原始顺序打印数字N的所有数字。
例子:
Input: N = 12
Output: 1, 2
Input: N = 1032
Output: 1, 0, 3, 2
方法1:最简单的方法是一一提取数字并打印出来。
- 提取数字N的最后一位数字N%10 ,并将该数字存储在数组中(例如arr [] )。
- 将N的值更新N / 10,然后重复上述步骤,直到N不等于0为止。
- 提取并存储所有数字后,从末尾遍历数组并打印存储在其中的数字。
下面是上述方法的实现:
// 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:使用递归
- 递归迭代直到N变为0:
- 基本情况:如果N的值为0 ,则从函数退出。
if(N==0) return ;
- 递归调用:如果不满足基本条件,则在递归调用之后,通过将N更新为N / 10并递归打印下一个从数字N提取的最后一位数字(例如r )的值来递归调用下一个迭代。
recursive_function(N/10); print(r);
- 基本情况:如果N的值为0 ,则从函数退出。
下面是上述方法的实现:
// 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基础课程》。