重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務器等服務
輸入數(shù)字n,按順序打印出從1到最大的n位十進制數(shù)。比如輸入3,則打印出1、2、3...一直到最大的3位數(shù)即999。
“專業(yè)、務實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務商、專業(yè)的互聯(lián)網(wǎng)服務提供商! 專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站、軟件開發(fā)、設(shè)計服務業(yè)務。我們始終堅持以客戶需求為導向,結(jié)合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!
其實一看這個題,就可以想到用一個循環(huán)來打印,循環(huán)次數(shù)就為10的n次方減一,即輸入3循環(huán)999次依次打印出所對應的值。但是,有一個重要的點就是,如果n的值很大,大到溢出了所能表示的最大整型范圍的值,比如用long long數(shù)據(jù)類型都存放不下了要怎么辦呢?這就可以考慮,用字符串的形式來表達大數(shù)據(jù),反正只是說讓打印出來;
程序設(shè)計如下:
#include#include 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始終在最后一位進行加1并輸出 { ++(*tmp); cout< = num; ++i)//用循環(huán)來完成在cur到tmp的期間字符表示數(shù)字的進位 { if((tmp-i) < cur)//當要進的位數(shù)不夠當前cur所能表示的范圍時將cur范圍擴大 --cur; if(cur >= num) { ++(*(tmp-i));//進位 if(*(tmp-i) <= '9')//若進位后不需要再向前進位,則輸出并break重新回到最低位 { cout< 初步的思想就是用兩個指針表示數(shù)字的范圍,一個tmp指針始終處在最低位加1,當需要進位時不停地往cur的方向進位,直到cur超出字符串的范圍;
運行程序:
這數(shù)字已經(jīng)夠密密麻麻的了,如果設(shè)置再大一些比如超出系統(tǒng)數(shù)據(jù)類型所能表示范圍的位數(shù),運算都要耗費些時間,這里就不設(shè)置驗證了。
《完》
分享標題:打印1到最大的n位數(shù)——12
文章出自:http://www.xueling.net.cn/article/jejdee.html