大數加法 減法 乘法 除法 高精度四則運算

2021-06-17 01:24:20 字數 2078 閱讀 8957

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 多個大數相加...