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

    本题考查大数问题。大数一般用字符串或者数组表示。注意,strlen()函数返回的值是数组''前元素的个数,并不包括''。

    C++版本

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    bool increment(char number[]){
        // 记录是否到达计数尽头
        bool isOverFlow = false;
        // 第n个位置的进位
        int nTakeOver = 0;
        int nLength = strlen(number);
        for(int i = nLength-1; i>=0; i--){
            // 计算第n个位置的十进制值
            int nSum = number[i] - '0' + nTakeOver;
            // 如果是最后一位数,则加1
            if(i == nLength - 1)
                nSum++;
            // 如果产生了进位
            if(nSum > 9){
                // 如果是首位产生了进位
                if(i == 0)
                    isOverFlow = true;
                else{
                    // 当前位置0
                    number[i] = '0';
                    // 将下一次的进位置一
                    nTakeOver = 1;
                }
            }
            // 没有产生进位,则接下来不需要再计算
            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("	");
    }
    
    void printf1ToMaxOfDigits(int num){
        if(num < 0)
            return ;
        char number[num+1];
        memset(number, '0', num);
        number[num] = '';
        while(!increment(number)){
            printNumber(number);
        }
    }
    
    
    int main()
    {
        printf1ToMaxOfDigits(2);
        return 0;
    }
    
    
  • 相关阅读:
    实现移动端上拉加载效果
    前端日常常用git命令
    css中单位em和rem的区别
    Sass框架的应用
    flex(弹性盒模型)布局写一个移动端
    windows和mac下分别配置虚拟主机
    把简单的二维数组变成一维数组
    go异常处理
    nginx中在超全局变量$_SERVER中增加变量
    阿里云接口异常-Can not find endpoint to access
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13340438.html
Copyright © 2011-2022 走看看