大數相加不能直接使用基本的int型別,因為int可以表示的整數有限,不能滿足大數的要求。可以使用字串來表示大數,模擬大數相加的過程。
思路:1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加;
2.對齊兩個字串,即短字串的高位用『0』補齊,便於後面的相加;
3.把兩個正整數相加,一位一位的加並加上進製。
具體**如下:
/**
* 兩個大數相加,且這兩個大數是正整數
* 暫時不考慮負數,不考慮輸入不合法的情況
* 要保證輸入是正確的才能保證程式正常執行
*/#include #include #define maxsize 1000
int main()
temp1[j] = '\0';
j = 0;
for(i = len2-1; i >= 0; --i)
//2.把兩個字串補齊,即短字串的高位用『0』補齊
maxlen = (len1 > len2)?len1:len2;
if(len1 < len2)
else if(len1 > len2)
//3.把兩個正整數相加,一位一位的加並加上進製
for(i = 0; i < maxlen; i++)
ncarrybit = 1;
sum[i] = nsum - 10 + '0';
} else
}//如果溢位的話表示位增加了
if(noverflow == 1)
sum[maxlen] = '\0';
//從後向前輸出,即是相加後的值
for(i = maxlen-1; i >=0; --i)
putchar(sum[i]);
printf("\n");
return 0;
}
執行結果:
兩個大數相加,使用字串模擬相加過程
大數相加不能直接使用基本的int型別,因為int可以表示的整數有限,不能滿足大數的要求。可以使用字串來表示大數,模擬大數相加的過程。思路 1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加 2.對齊兩個字串,即短字串的高位用 0 補齊,便於後面的相加 3.把兩個正整數相加,一位一位...
用字串模擬兩個大數相加 java實現
問題 大數相加不能直接使用基本的int型別,因為int可以表示的整數有限,不能滿足大數的要求。可以使用字串來表示大數,模擬大數相加的過程。思路 1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加 2.對齊兩個字串,即短字串的高位用 0 補齊,便於後面的相加 3.把兩個正整數相加,一...
兩個大數相加
兩個大數相加,暫時選擇簡單版本,使用兩個正整數相加,直接上 了,不再囉嗦了。include define maxnum 10000 bool inspectcharvalid char value void add char num1,char num2,char result int main i...