您的位置:首页 > 编程语言 > C语言/C++

大数自增

2015-10-31 21:51 225 查看
题目:输入数字n,按顺序打印从1到最大的n位的十进制数,比如输入3,则打印从1,2,3一直到最大的三位数999。

解答:本题容易陷入面试官的陷阱,因为如果n非常大,整形或长整型是存不下这个数据的,所以自然应该利用字符串表示大数的方式。大数自增的代码如下,但是打印时应该注意前面有零的情况,要遇到第一个非零开始打印。

bool AutoIncrement(char* strNum)
{
int len = (int)strlen(strNum);

int index = len - 1;
int carry = 0;
while(index >= 0)
{

int temp = strNum[index] - '0' + carry;
if(index == len - 1)
temp += 1;
if(temp > 9)
{
carry = 1;
strNum[index] = temp%10 + '0';
}
else
{
carry = 0;
strNum[index] = temp + '0';
}

if(0 == index && 0 != carry)
return false;
--index;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 c++ 大数 字符串