【面试题12】打印1到最大的n位数
来源:互联网 发布:fps游戏鼠标推荐 知乎 编辑:程序博客网 时间:2024/06/04 18:18
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数即999.
题目陷阱:大数问题
在字符串上模拟数字加法的解法:
void Print1ToMaxOfNdigits(int n){ if(n<=0) return ; char *number=new char[n+1]; memset(number,'0',n); number[n]='\0'; while(!Incrememt(number)) { printNumber(number); } delete []number;}
如何在每一次增加1之后快速判断是不是到了最大的n位数是本题的一个小陷阱。
bool Increment(char* number){ bool isOverflow=false; int nTakeOver=0; int nLength=strlen(number); for(int i=nLength-1;i>=0;i--) { int nSum=number[i]-'0'+nTakeOver; if(i==nLength-1) nSum++; if(nSum>=10) { if(i==0) isOverflow=true; else { nSum-=10; nTakeOver=1; number[i]='0'+nSum; } }else { number[i]='0'+nSum; break; } } return isOverflow;}
能不能按照阅读习惯打印时另一个小陷阱.
void PrintNumber(char* number){ bool isBeginning0=true; int nLength=strlen(number); for(int i=0;i<nLength;++i) { if(isBeginning0 && number[i]!='0') isBeginning0=false; if(!isBeginning0) { printf("%c",number[i]); } } printf("\t");}
0 0
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12 打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12-打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 【面试题12】打印1到最大的n位数
- 面试题12打印1到最大的n位数
- Python3的循环
- C++实验3-个人所得税计算器
- 对象池
- iOS KVC和KVO的使用
- 使用自定义的类作为Map接口key的参数时
- 【面试题12】打印1到最大的n位数
- namespace
- C++上机实验3—(4)
- 常用命令汇总
- android 6.0以后的运行时权限申请及封装 相关记录
- mongodb API 官方资料
- ERROR [qtp-ambari-client-28] BaseManagementHandler:57
- 第三次实验:项目二
- js中substring和substr的用法