《剑指offer》——打印1到最大的n位数
来源:互联网 发布:淘宝限制购物怎么解除 编辑:程序博客网 时间:2024/05/29 13:44
考虑大数问题,使用字符数组存储,
#include<iostream>using namespace std;bool inc(char *num){ //累加结束标志,初始为false //只有当下标为0的位置上产生进位时,才能表明打印结束 bool flag = false; int len = strlen(num); int c = 0;//进位标志 for(int i = len - 1; i >= 0; i--) { num[i] = num[i] + c; if(i == len - 1)//每次自加都在第len-1位上进行 ++num[i]; if(num[i] > '9')//如果大于9,则进位 { if(i == 0)//如果在第0位置上产生进位,设置flag为true flag = true; else//否则将当前位置上的值减10,并将进位标志置1 { num[i] -= 10; c = 1; } } else { break;//如果不大于10,则结束循环,直接打印 } } return flag;}void show(char *num){ while(*num == '0')//跳过之前为0的字符,如跳过098前面的0 num++; while(*num != '\0')//输出当前的字符 { cout << *num; num++; }}void print(int n){ if(n <= 0)//错误的输入 cout << "error" << endl; char *num = new char[n + 1];//新建一个长度为n+1的字符数组 memset(num, '0', n);//将数组初始化 num[n] = '\0';//设置结束位 while(!inc(num)) show(num);//循环打印每个数}int main() { print(3);//输出1~999 return 0;}
0 0
- 剑指offer—打印1到最大n位数
- 剑指Offer之打印1到最大的N位数
- 剑指offer:打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- [剑指Offer]打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- 剑指Offer之打印1到最大的n位数
- 剑指Offer之 - 打印1到最大的n位数
- 剑指offer-12 打印1到最大的N位数
- 剑指offer 12 -打印1到最大的n位数
- 剑指offer:打印1到最大的n位数
- 剑指Offer-12-打印1到最大的n位数
- [剑指offer-1515]打印1到最大的N位数
- 剑指offer 打印1到最大的N位数
- 剑指Offer--012-打印1到最大的N位数
- 剑指Offer 打印1到最大的n位数
- 剑指Offer:打印1到最大的N位数
- 《剑指offer》:[16]打印1到最大的N位数
- 05.(java基础)-02final,finally,finalize的区别
- AFNetWorking使用总结(待总结。。。)
- Objective-C代码混淆
- hdu 2602 Bone Collector(01背包)(水)
- Esper剖析
- 《剑指offer》——打印1到最大的n位数
- swift控件之旅之UITextField
- LInux学习网站
- iOS越狱开发
- hdu1565方格取数(1)【状态压缩】
- windows API实现用户选择文件路径的对话框
- 阅读赵炯的《Linux内核完全注释》之前必须知道的!
- iOS越狱检测
- android-CTS调试方法