面试题12打印1到最大的n位数
2017-05-25 15:52
337 查看
题目:输入数字n,按顺序打印出从1最大的n位十进制数。例如输入3,则打印出1,2,3,....,一直到最大的3位数即999
陷阱:考虑大数问题,就是输入的数字非常大的情况,如100,怎么表示100位的数呢。用字符串保存
细节问题
1,字符串递增的溢出判断
2,打印时过滤0
源代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
bool Increase(char* num)
{
bool isOverFlow=true;
int len=strlen(num);
int takeover=0;
for(int i=0;i<len;i++)
{
int a=num[i]-'0'+takeover;
if(i==0)
a=a+1;
if(a>=10)
{
if(i==len-1)
{
isOverFlow=false;
}
else
{
a=a-10;
takeover=1;
num[i]='0'+a;
}
}
else
{
num[i]='0'+a;
break;
}
}
return isOverFlow;
}
void Print(char *p)
{
int len=strlen(p);
int i=len-1;
while(p[i]=='0')
{
i--;
}
for(;i>=0;i--)
{
printf("%c",p[i]);
}
}
void test(int &n)
{
n++;
}
void main()
{
int n;
printf("输入n:");
scanf("%d",&n);
char *p;
p=(char *)malloc((n+1)*sizeof(char));
memset(p,'0',n);
p
='\0';
printf("\n%s",p);
printf("长度:%d\n",strlen(p));
while(Increase(p))
{
Print(p);
printf("\t");
}
}
陷阱:考虑大数问题,就是输入的数字非常大的情况,如100,怎么表示100位的数呢。用字符串保存
细节问题
1,字符串递增的溢出判断
2,打印时过滤0
源代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
bool Increase(char* num)
{
bool isOverFlow=true;
int len=strlen(num);
int takeover=0;
for(int i=0;i<len;i++)
{
int a=num[i]-'0'+takeover;
if(i==0)
a=a+1;
if(a>=10)
{
if(i==len-1)
{
isOverFlow=false;
}
else
{
a=a-10;
takeover=1;
num[i]='0'+a;
}
}
else
{
num[i]='0'+a;
break;
}
}
return isOverFlow;
}
void Print(char *p)
{
int len=strlen(p);
int i=len-1;
while(p[i]=='0')
{
i--;
}
for(;i>=0;i--)
{
printf("%c",p[i]);
}
}
void test(int &n)
{
n++;
}
void main()
{
int n;
printf("输入n:");
scanf("%d",&n);
char *p;
p=(char *)malloc((n+1)*sizeof(char));
memset(p,'0',n);
p
='\0';
printf("\n%s",p);
printf("长度:%d\n",strlen(p));
while(Increase(p))
{
Print(p);
printf("\t");
}
}
相关文章推荐
- [剑指offer][面试题12]打印1到最大的n位数
- 剑指offer面试题12-打印1到最大的n位数
- 《剑指Offer》面试题12:打印1到最大的n位数
- 剑指offer面试题12-打印1到最大的n位数
- 剑指offer之面试题12:打印1到最大的n位数
- 剑指offer-面试题12.打印1到最大的n位数
- 面试题12 打印1到最大的N位数
- 剑指offer 面试题12—打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 剑指Offer-面试题12:打印1到最大的n位数
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
- 剑指Offer面试题12打印1到最大的n位数,面试题13在O(1)时间删除链表结点
- 剑指Offer面试题12:打印1到最大的n位数 Java实现
- 剑指offer面试题12:打印1到最大的n位数
- 海涛老师的面试题-作业12-打印从1到最大的n位数
- 面试题12-打印1到最大的n位数
- 剑指Offer:面试题12 打印1到最大的n位数
- 面试题12 打印1到最大的n位数
- 剑指Offer----面试题12:打印1到最大的n位数
- 面试题12:输入数字n,按照顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999