大数自增
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;
}
解答:本题容易陷入面试官的陷阱,因为如果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++实现JNI接口需要注意的事项
- 关于指针的一些事情
- 数据库链接字符串查询网站
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- Flex字符串比较 还有Flex字符串操作
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua中调用C++函数示例
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- Lua教程(一):在C++中嵌入Lua脚本
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- Lua教程(二):C++和Lua相互传递数据示例
- 总结的5个C#字符串操作方法分享