您的位置:首页 > 职场人生

面试题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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: