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