題目:
漢川網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。輸入數(shù)字n,按順序打印出1到大的n位十進制數(shù)。比如輸入3,則打印出1,2,3,一直到大的3位數(shù)即999。
此題看起來簡單,當我剛開始看到問題后,首先想到的就是先求出大值,然后在一個一個打印出就ok啦。但是仔細理解題意,并沒有告訴n的取值范圍。若n的值非常大,可能就超過了int或者long long的范圍。也就是說在做此題時,需要考慮大數(shù)。
為解決存大數(shù)的問題,我們可以利用數(shù)組或者字符串存大數(shù)。接下來我用字符串來解決大數(shù)問題。
首先,需要考慮兩個問題:
(1)在字符串上模擬加法
(2)將字符串中的數(shù)字打印出來
程序實現(xiàn):
模擬加法:
bool inc(char* num,int n)//模擬加法 { int i = 0; int m = 0; int take = 0;//進位 for(i=n-1;i>=0;i--) { m = num[i]-'0'+ take; take = 0;//進位置0 if(i == n-1) //從末尾加 { m++; } if(m >= 10)//產(chǎn)生進位 { if(i == 0)//若最高為溢出,終止 return 0; else { take = 1; num[i] = m - 10 + '0';//進位后,將本位置0 } } else { num[i] = m + '0';//不產(chǎn)生溢出時,在本位上加 } } return true; }
打?。?/p>
//void print(char* num,int n) //{ // bool flag = true;//標志位 // int i = 0; // for(i=0;i測試:
int main() { int n = 3;//3位數(shù) char* str = new char[n+1];//字符串的最后一位為‘\0’,多開辟一個空間 memset(str,'0',n);//初始化 str[n] = '\0'; while(inc(str,n)) { print(str,n); } delete[] str;//釋放空間 str = NULL; return 0; }創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
網(wǎng)頁標題:字符串上模擬加法-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/dechhp.html