内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

打印1到最大的n位數(shù)——12

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

“專業(yè)、務(wù)實、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站、軟件開發(fā)、設(shè)計服務(wù)業(yè)務(wù)。我們始終堅持以客戶需求為導(dǎo)向,結(jié)合用戶體驗與視覺傳達(dá),提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!

    

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

程序設(shè)計如下:

#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)//初始化字符串將其全部設(shè)置為0
    {   
        *tmp = '0';
        ++tmp;
    }   

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

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

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


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

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

運(yùn)行程序:

打印1到最大的n位數(shù)——12

這數(shù)字已經(jīng)夠密密麻麻的了,如果設(shè)置再大一些比如超出系統(tǒng)數(shù)據(jù)類型所能表示范圍的位數(shù),運(yùn)算都要耗費(fèi)些時間,這里就不設(shè)置驗證了。

《完》

本文名稱:打印1到最大的n位數(shù)——12
新聞來源:http://m.rwnh.cn/article44/jejdee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、服務(wù)器托管、品牌網(wǎng)站設(shè)計云服務(wù)器、虛擬主機(jī)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
武胜县| 靖边县| 德钦县| 兴仁县| 灵山县| 琼中| 天峻县| 旬邑县| 嘉义县| 错那县| 鞍山市| 镇巴县| 凯里市| 尤溪县| 淮南市| 栾城县| 连城县| 齐齐哈尔市| 城市| 垦利县| 平定县| 康乐县| 和龙市| 青河县| 金堂县| 宜兰市| 岐山县| 波密县| 阳高县| 拜泉县| 华蓥市| 黄骅市| 喜德县| 苏尼特右旗| 肇庆市| 轮台县| 高唐县| 衡水市| 佛冈县| 车险| 沧州市|