问题描述:
输入数字n,按顺序打印从1到最大的n位十进制数。
例子:
输入3,则打印1,2,………………,999。
实现代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int count=0;
void printNum(char num[],int length){
int i;
for(i=length-1;i>=0 && num[i]=='0'; i--);
if(i<0){
printf("0\t");
return;
}
for(;i>=0; i--){
printf("%c",num[i]);
}
count++;
printf("\t");
}
void doPrintOneToN(char num[],int length,int index){
if(index==length-1){
printNum(num,length);
return ;
}
++index;
int i;
for(i=0;i<10;i++){
num[index]=i+'0';
doPrintOneToN(num,length,index);
}
}
int main(int argc, char *argv[])
{
srand((unsigned) time( NULL ));
int n = rand()%5;
printf("%d\n",n);
char num[n];
int i;
for(i=0;i<10;i++){
num[0]=i+'0';
doPrintOneToN(num,n,0);
}
printf("this is count :%d,not make zero in.\n",count);
return 0;
}
上面算法用数组存储char,用字符串表示数字,避免大数问题。
参考资料:
剑指offer
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51371911
作者:WSYW126