打印1到最大的n位数
程序员文章站
2024-03-15 22:08:54
...
这道题题目为输入数字n,按顺序打印出1最大的n位十进制数。
解题思路为:对于打印出1最大的n位十进制数,可以采取在数字前面补0的方法,其实n位十进制数就是n个从0到9的全排列。在打印的时候只需不打印数字前面的0即可。
用递归实现代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
void PrintNumber(char *number)
{
bool isBeginning0 = true;
int nLength = strlen(number);
for (int i = 0; i < nLength; ++i)
{
if (isBeginning0&&number[i] != '0')
isBeginning0 = false;
if (!isBeginning0)
{
printf("%c", number[i]);
}
}
printf("\t");
}
void Print(char* number, int length, int index)
{
if (index == length - 1)
{
PrintNumber(number);
return;
}
for (int i = 0; i < 10; ++i)
{
number[index + 1] = i + '0';
Print(number, length, index + 1);
}
}
void PrintOneToN(int n)
{
if (n <= 0)
return;
char *number =(char*)malloc(n+1);
if (number == NULL)
{
return ;
}
number[n] = '\0';
for (int i = 0; i < 10; ++i)
{
number[0] = i + '0';
Print(number, n, 0);
}
free(number);
number = NULL;
}
上一篇: 打印1到最大的n位数 java 数组实现
下一篇: 打印1到最大的n位数