用C語言求兩個超大整數的和
在生活中,我們經常需要計算非常大的數,但是任何一種計算器都有計算范圍,一旦超過計算范圍就會有精度的損失。或許有同學認為我們可以通過程序來解決,比如對于C語言來說,我們定義一個long long型的數據變量,這樣就可以計算兩個超大整數的和了。但是我們都知道,long long型表示的最大范圍為9223372036854775807,最小值為-9223372036854775808,這才是20多位而已,假如我們需要計算兩個均為兩百位數的超大整型數的和,那我們該如何解決呢?
答案其實很簡單,其實也是用程序來解決,只不過此時就不能簡單定義兩個變量計算結果了,小編今天碰到一道類似題,特意在此分享解決此問題的代碼:
#include
#include
int main()
{
char arr1[201],arr2[201];
printf("請輸入加數:");
scanf("%s",&arr1);
printf("請輸入另一個加數:");
scanf("%s",&arr2);
int len1=strlen(arr1);
int len2=strlen(arr2);
int i;
int a[201]={0};int b[201]={0};int sum[202]={0};
//轉換
int j=0;
for(i=len1-1;i>=0;i--)
{
a[j++]=arr1[i]-'0';
}
j=0;
for(i=len2-1;i>=0;i--)
{
b[j++]=arr2[i]-'0';
}
//求和
int max=(len1>len2)?len1:len2;
for(i=0;i
{
sum[i]=a[i]+b[i];
}
//進位操作處理
for(i=0;i
{
if(sum[i]>=10)
{
sum[i+1]++;
sum[i]-=10;
}
}
//輸出結果
printf("計算結果為:");
for(i=max-1;i>=0;i--)
{
printf("%d",sum[i]);
}
return 0;
}
這段代碼有很大的完善空間,歡迎大家留言批評討論
這是加法的計算代碼,大家可以嘗試寫一寫減法的相關代碼;有能力的可以寫寫乘法和除法的(確實比較難);