亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

打印1到最大的n位數——12

發布時間:2020-06-24 19:52:02 來源:網絡 閱讀:529 作者:給我個bit位 欄目:編程語言

    輸入數字n,按順序打印出從1到最大的n位十進制數。比如輸入3,則打印出1、2、3...一直到最大的3位數即999。

    

    其實一看這個題,就可以想到用一個循環來打印,循環次數就為10的n次方減一,即輸入3循環999次依次打印出所對應的值。但是,有一個重要的點就是,如果n的值很大,大到溢出了所能表示的最大整型范圍的值,比如用long long數據類型都存放不下了要怎么辦呢?這就可以考慮,用字符串的形式來表達大數據,反正只是說讓打印出來;

程序設計如下:

#include <iostream>
#include <string.h>
using namespace std;

void PrintMaxNNum(size_t n)
{
    char *num = new char[n+1];//最后一個字符存放'\0'

    char* tmp = num;
    while(tmp < num+n)//初始化字符串將其全部設置為0
    {   
        *tmp = '0';
        ++tmp;
    }   

    *(tmp--) = '\0';//使tmp指向最后一個有效字符

    char *cur = tmp;
    
    while(cur >= num)
    {   
        while(*tmp < '9')//tmp始終在最后一位進行加1并輸出
        {
            ++(*tmp);
            cout<<cur<<" ";
        }
        *tmp = '0';//當循環結束時tmp恢復為0并且要向高位進位

        for(int i = 1; cur >= num; ++i)//用循環來完成在cur到tmp的期間字符表示數字的進位
        {
            if((tmp-i) < cur)//當要進的位數不夠當前cur所能表示的范圍時將cur范圍擴大
                --cur;
            if(cur >= num)
            {
                ++(*(tmp-i));//進位
                if(*(tmp-i) <= '9')//若進位后不需要再向前進位,則輸出并break重新回到最低位
                {
                    cout<<cur<<" ";
                    break;
                }
                else//否則向再高位依次進位
                {
                    *(tmp-i) = '0';
                    continue;
                }
            }
        }
    }
    cout<<endl;
    delete[] num;
}


int main()
{
    size_t n = 3;
    PrintMaxNNum(n);
    return 0;
}


初步的思想就是用兩個指針表示數字的范圍,一個tmp指針始終處在最低位加1,當需要進位時不停地往cur的方向進位,直到cur超出字符串的范圍;

運行程序:

打印1到最大的n位數——12

這數字已經夠密密麻麻的了,如果設置再大一些比如超出系統數據類型所能表示范圍的位數,運算都要耗費些時間,這里就不設置驗證了。



《完》

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达州市| 恩施市| 梧州市| 荔浦县| 甘谷县| 绍兴县| 安仁县| 广西| 河北省| 井冈山市| 河南省| 仁化县| 韶关市| 尉氏县| 灌云县| 左权县| 聂拉木县| 衡山县| 原阳县| 抚远县| 方山县| 墨竹工卡县| 惠来县| 张家港市| 天水市| 新宾| 青岛市| 嘉义县| 手游| 潞城市| 陆丰市| 龙胜| 东乌珠穆沁旗| 唐海县| 烟台市| 奉节县| 伊通| 宣武区| 长泰县| 德保县| 玛曲县|