大数自增

来源:互联网 发布:ubuntu怎么解压缩 编辑:程序博客网 时间:2024/06/04 18:07

题目:输入数字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;}


1 0
原创粉丝点击