您的位置:首页 > 其它

打印1到最大的n位数

2016-06-19 01:29 183 查看
解析:

//打印1到最大的n位数
//最开始是看剑指offer实现的,但看着有点晕,于是自己经常调试后总结出来的
//所以如果看不怎么懂的时候将代码写出来然后调试,调试后就知道它是怎么运行的
//注释的部分是剑指offer上实现的,
bool increment(char *str)
{
//bool is_over_flow=false;
int tmp=0;
//int nTake=0;
int len=strlen(str);
for(int i=len-1; i>=0; --i)
{
int sum=str[i]-'0'+tmp;
//int sum=str[i]-'0'+nTake;
if(i==len-1)
sum++;
if(sum >=10)
{
if(i==0)
return true;
//is_over_flow=true;
else
{
sum-=10;
tmp=1;
//nTake=1;
str[i]='0';
}
}else
{
str[i]='0'+sum;
return false;
//break;
}
}
return true;
//return is_over_flow;
}
void print_str(char *str)
{
bool flag=true;
int len=strlen(str);
for(int i=0; i<len; ++i)
{
if(flag && str[i] !='0')
flag=false;
if(!flag)
printf("%c",str[i]);
}
printf("\t");
}
void print_max(int n)
{
if(n<=0)
return;
char *str=new char[n+1];
memset(str,'0',sizeof(str));
str
='\0';
while(!increment(str))
{
print_str(str);
}
delete []str;
}

//最直接的方法-->没有考虑n很大的时候
void print_int(int n)
{
int number=1;
int i=0;
while(i++ <n)
number*=10;
for(i=1;i<number; ++i)
printf("%d ",i);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: