題目:
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括金川網(wǎng)站建設(shè)、金川網(wǎng)站制作、金川網(wǎng)頁制作以及金川網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,金川網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到金川省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
輸入數(shù)字n,按順序打印出1到最大的n位十進(jìn)制數(shù)。比如輸入3,則打印出1,2,3,一直到最大的3位數(shù)即999。
此題看起來簡單,當(dāng)我剛開始看到問題后,首先想到的就是先求出最大值,然后在一個一個打印出就ok啦。但是仔細(xì)理解題意,并沒有告訴n的取值范圍。若n的值非常大,可能就超過了int或者long long的范圍。也就是說在做此題時,需要考慮大數(shù)。
為解決存大數(shù)的問題,我們可以利用數(shù)組或者字符串存大數(shù)。接下來我用字符串來解決大數(shù)問題。
首先,需要考慮兩個問題:
(1)在字符串上模擬加法
(2)將字符串中的數(shù)字打印出來
程序?qū)崿F(xiàn):
模擬加法:
bool inc(char* num,int n)//模擬加法 { int i = 0; int m = 0; int take = 0;//進(jìn)位 for(i=n-1;i>=0;i--) { m = num[i]-'0'+ take; take = 0;//進(jìn)位置0 if(i == n-1) //從末尾加 { m++; } if(m >= 10)//產(chǎn)生進(jìn)位 { if(i == 0)//若最高為溢出,終止 return 0; else { take = 1; num[i] = m - 10 + '0';//進(jìn)位后,將本位置0 } } else { num[i] = m + '0';//不產(chǎn)生溢出時,在本位上加 } } return true; }
打印:
//void print(char* num,int n) //{ // bool flag = true;//標(biāo)志位 // int i = 0; // for(i=0;i<n;i++) // { // if(flag && num[i] != '0') // { // flag = false; // } // if(!flag)//若高位不為0,打印 // { // printf("%c",num[i]); // } // } // cout<<" "; //} void print(char* num,int n) { int i = 0; for(i=0;i<n;i++) { if(num[i] != '0') break; } printf("%s",num+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; }
網(wǎng)站標(biāo)題:字符串上模擬加法
標(biāo)題來源:http://m.newbst.com/article46/pooieg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、ChatGPT、網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站營銷、自適應(yīng)網(wǎng)站
聲明:本網(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)