欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

打印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;
}