zoukankan      html  css  js  c++  java
  • 【编程题目】输出 1 到最大的 N 位数

    65.输出 1 到最大的 N 位数(运算)
    题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,
    则输出 1、2、3 一直到最大的 3 位数即 999。

    思路:肯定要考虑数字溢出的情况,用字符串表示数字,模拟加法。

    /*
    65.输出 1 到最大的 N 位数(运算)
    题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,
    则输出 1、2、3 一直到最大的 3 位数即 999。
    */
    
    #include <iostream>
    using namespace std;
    
    void printnum(int n)
    {
        int figure = 0; //记录数字的位数
    
        char * pNum = new char [n + 1];
        memset(pNum, 0, n * sizeof(char));
    
        pNum[0] = 1; //从1开始
        while(figure < n)
        {
            for (int i = figure; i >= 0; i--) //输出数字 从当前的最高位开始
            {
                cout << int(pNum[i]);
            }
            cout << endl;
    
            int ftmp = 0;
            while (pNum[ftmp] == 9) //从最后一位依次向前判断是否进位,如果进位本位就归零, 找到实际上增加的那一位
            {
                pNum[ftmp++] = 0;
            }
            if (ftmp > figure) //如果满足,表示数字的位数增加了
            {
                figure++;
            }
            pNum[ftmp] += 1;
        }
    
        delete [] pNum;
    }
    
    int main()
    {
        printnum(3);
        return 0;
    }

    网上搜了下答案,感觉我自己写得这个就挺好的。

  • 相关阅读:
    20180530
    vue路由配置出错,导致页面跳转会有闪屏问题
    20180528
    vuecli+ivew项目搭建
    centos6安装mysql
    华为云服务ESC
    centos6安装nginx
    国产操作系统aarch64编译filebeat
    Python常见问题
    Git
  • 原文地址:https://www.cnblogs.com/dplearning/p/3916791.html
Copyright © 2011-2022 走看看