1. 加法
輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同時注意進製處理。
#include #include int main()
,b[555]=,c[555]=;
scanf("%s",m);
len_m =strlen(m);
for(i=0;i<=len_m -1;i++)
a[i]=m[len_m -1 -i]-'0';
scanf("%s",n);
len_n=strlen(n);
for(i=0;i<=len_n -1;i++)
b[i]=n[len_n -1 -i]-'0';
if(len_m>len_n)
len_max=len_m;
else
len_max=len_n;
k=0;
for(i=0;i<=len_max -1;i++)
if(k!=0) c[len_max]=1;
if(c[len_max]==1) printf("1");
for(i=len_max -1;i>=0;i--)
printf("%d",c[i]);
return 0;
}
2. 減法
原理同加法一樣(不確定兩個數的大小關係)
比較兩數大小:先比較長度,再按位比較(按位比較沒寫)
#include #include int main()
,b[555]=;
scanf("%s",m);
len_m =strlen(m);
for(i=0;i<=len_m -1;i++)
a[i]=m[len_m -1 -i]-'0';
scanf("%s",n);
len_n=strlen(n);
for(i=0;i<=len_n -1;i++)
b[i]=n[len_n -1 -i]-'0';
if(len_m < len_n)
else
return 0;
}
3. 乘法
原理上也是採用陣列模擬。
a[i]123
b[j] 12
用c[k]來儲存每次的運算結果,k=i+j;
c[i+j]=c[i+j]+a[i]*b[j];
這裡來模擬一次乘法過程:
123* 12
-------------
246
+ 123
-------------
1476
#include #include int main()
,b[555]=,c[1111]=;
scanf("%s",m);
scanf("%s",n);
if(strlen(m)=10)
i=2*len_m;
while(c[i]==0) i--;
if(i<0) printf("0");
else
return 0;
}
4. 除法
除法也是利用陣列模擬,不過這裡不是直接按照除法的運算來,而是把除法轉變為減法運算,從而求得結果。
#include #include int len1,len2;
char s1[905],s2[905];
int re[905];
void sub()
}for(;ij;i--) //低位開始檢測是否小於0
if(s1[i]<'0')
}int main()
p++;
if(len1==len2) break;
for(i=len2-1;i>=0;i--) //在s2前面補0,以便進行減法運算
s2[i+1]=s2[i];
s2[0]='0';
len2++;
s2[len2]='\0';
}i=0;
while(1)
for(;i
高精度加法 減法 乘法 除法
給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35高精度加法利用陣列儲存每一位數,把最後一位儲存到陣列的第一位會方便操作一些,然後就是模擬人為加法的過程 include using...
大數加法 減法 乘法 除法
大數加法 實現 include include typedef char str 1000 void printnum int sum int len 輸出 void add str a int len a str b int len b 計算a b 只能 while len a 1 if c 0 ...
高精度 大數加法 乘法 除法 冪 模板
一 加法 1 普通兩個大數相加 如下 include include include void fan char s int main else p 0 if p z i 1 z i 0 fan x fan y fan z printf s s s n x,y,z return 0 2 多個大數相加...