codeblocks如何让输出结果 空格_简单讲讲如何实现两个正整数相加,然后输出这个结果...
首先吧,兩個(gè)整數(shù)123 456,相加得到579,我們就得輸出579,這個(gè)很容易操作,但是如果是:
1212161596156198115645646886148461554
+??
2671232162176217624372497590415915915029125 ?呢?long ? long long ? long long long?...沒(méi)這個(gè)類型。這數(shù)據(jù)大小沒(méi)辦法以單個(gè)變量?jī)?chǔ)存。當(dāng)出現(xiàn)這種情況時(shí)我們就要考慮數(shù)組模擬運(yùn)算了。
什么是數(shù)組模擬運(yùn)算?可能是把一串長(zhǎng)長(zhǎng)的數(shù)組每一個(gè)位置都當(dāng)做一個(gè)位了,長(zhǎng)度高達(dá)500位的正整數(shù)就可以輕而易舉地儲(chǔ)存進(jìn)超過(guò)500位的數(shù)組當(dāng)中。
比如sum[505]
如何實(shí)現(xiàn)呢?如何參與運(yùn)算呢?耐心看:
————————
我這弄了個(gè)代碼,可能處理方式不算好,但是能用。:
————
#include
int?main(void){
????//數(shù)組模擬兩長(zhǎng)正整數(shù)加法???之和不超過(guò)500位
????int?sum[500]?=?{0};
????char?alp[500]={0};
????scanf("%s",?alp);
????int?k?=?0;
????while(alp[k]!='\0')
????????k++;
????//得到數(shù)據(jù)長(zhǎng)度為k位,最高位在低下標(biāo)(0),低位在高下標(biāo)(k-1)
????int?i?=?0;
????for?(;?i?<?k;i++){
????????sum[k-i-1]?+=?alp[i]?-?'0';
????}
????getchar();??????//兩串?dāng)?shù)中間有個(gè)空格,該操作可以把空格移出輸入緩沖區(qū),不過(guò)沒(méi)有必要
????scanf("%s",?alp);
????k?=?0;
????while(alp[k]!='\0')
????????k++;
????//得到數(shù)據(jù)長(zhǎng)度為k位,最高位在低下標(biāo)(0),低位在高下標(biāo)(k-1)
????i?=?0;
????for?(;?i?<?k;i++){
????????sum[k-i-1]?+=?alp[i]?-?'0';
????}
????//進(jìn)行進(jìn)位操作
????for?(i?=?0;?i?<?k+1;i++){???????//因?yàn)槭羌臃?#xff0c;長(zhǎng)不了多少位,所以隨便取個(gè)范圍上限(k+1)就行了,太大白白浪費(fèi)時(shí)間
????????if(sum[i]>=10){
????????????sum[i?+?1]?+=?sum[i]?/?10;
????????????sum[i]?=?sum[i]?%?10;
????????}
????}
????k?=?499;
????while(sum[k]==0){
????????k--;
????}
????//得到計(jì)算后的值的最高位的下標(biāo),然后開始輸出,輸出到下標(biāo)0
????while(k>=0){
????????printf("%d",?sum[k]);
????????k--;
????}
}
————
就到這吧。
總結(jié)
以上是生活随笔為你收集整理的codeblocks如何让输出结果 空格_简单讲讲如何实现两个正整数相加,然后输出这个结果...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 厦门大学2016年c语言程序设计,厦门大
- 下一篇: debian java7_Debian