zoukankan      html  css  js  c++  java
  • 面试题12:打印1到最大的n位数

    // 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    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)//若是首位满10,则到了最大的n位
                    isOverflow=true;
                else
                {
                    nSum-=10;
                    nTakeOver=1;//若满10则上一位加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)
            {
                cout<<number[i];
            }
        }
        cout<<"	";
    }
    
    
    void Print1ToMaxOfNDigits(int n)
    {
        if(n<=0)
            return;
    
        char *number=new char[n+1];
        memset(number,'0',n);
        number[n]='';
    
        while(!Increment(number))
        {
            PrintNumber(number);
        }
        delete []number;
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        Print1ToMaxOfNDigits(3);
        return 0;
    }

    字符串是一个简单、有效的表示大数的方法。

  • 相关阅读:
    链接数据库
    Ajax 密码验证
    for循环 打印菱形 空 和 实
    for 循环 正方形
    面向对象
    用正则表达式 匹配手机号码
    正则表达式
    js 中 == 和=== 有什么区别?
    js 删除
    封装函数增删改查
  • 原文地址:https://www.cnblogs.com/Mikuroro/p/4596382.html
Copyright © 2011-2022 走看看