C 的大整數四則運算

2021-09-19 13:13:47 字數 4352 閱讀 5093

#include

#include

#include

#include

using namespace std;

const

int maxsize =

1000

;//函式宣告

void

menu_bigint()

;//-------------------------------------大整數四則運算選單

intin_bigint

(char

*a);

//---------------------------------大整數的輸入

void

sum_bigint

(char

*a,char

*b,char

*sum)

;//-----------大整數加法運算

void

jian_bigint

(char

*a,char

*b,char

*jian)

;//---------大整數減法運算

void

cheng_bigint

(char

*a,char

*b,char

*cheng)

;//-------大整數乘法運算

void

chu_bigint

(char

*a,int b,

int w,

char

*chu)

;//------大整數除法運算

intstrcmp_bigint

(char

*s1,

char

*s2)

;//------------------比較兩個大整數的大小

void

clean_bigint

(char

*a)if

(j) a[j-i]

='\0'

;//上鎖

if(a[0]

=='\0')}

intstrcmp_bigint

(char

*s1,

char

*s2)

else

if(s1[i]

> s2[i]

)else}if

(flag1)

return1;

if(flag2)

return-1

;if(i == len1)

return0;

}if(len1 < len2)

return-1

;}intin_bigint

(char

*a)}

return1;

}void

sum_bigint

(char

*a,char

*b,char

*sum)

else jin =0;

c[wei++

]= num +

'0';

//將本位數轉換為相應字元賦值給c

i--, j--;}

while

(i >=0)

else jin =0;

c[wei++

]= num +

'0';

//將本位數轉換為相應字元賦值給c

i--;}

while

(j >=0)

else jin =0;

c[wei++

]= num +

'0';

//將本位數轉換為相應字元賦值給c

j--;}

//如果a和b都沒有剩餘,但上一次求和的結果存在進製值

if(jin !=

0) c[wei++

]= jin +

'0';

for(i = wei -

1, j =

0; i >=

0; i--

)else

} sum[j]

='\0'

;//給字串sum上鎖

}void

jian_bigint

(char

*a,char

*b,char

*jian)

else jie =0;

c[wei++

]= num +

'0';

//將本位數轉換為相應字元賦值給c

i--, j--;}

while

(i >=0)

else jie =0;

c[wei++

]= num +

'0';

//將本位數轉換為相應字元賦值給c

i--;}

for(i = wei -

1, j =

0; i >=

0; i--

)else

} jian[j]

='\0'

;//給字串sum上鎖

}elseif(

!strcmp_bigint

(a, b)

)else

}void

cheng_bigint

(char

*a,char

*b,char

*cheng)

for(i =

0; i <= len1; i++

)else}}

}for

(i =

0, j = len -

1; j >=

0; j--

)else

} cheng[i]

='\0'

;//上鎖

}void

chu_bigint

(char

*a,char

*b,int w,

char

*chu)

num =0,

strcpy

(p, t)

;while

(strcmp_bigint

(p, b)

>=0)

chu[wei++

]= num +

'0';

while

(strcmp_bigint

(t, b)

>=0)

for(i = j; i <

strlen

(a); i++

)//c[wei++] = t / b +'0'

num =0,

strcpy

(p, t)

;while

(strcmp_bigint

(p, b)

>=0)

chu[wei++

]= num +

'0';

while

(strcmp_bigint

(t, b)

>=0)

} chu[wei++]=

'.';

for(i =

0; i < w; i++

)//c[wei++] = t / b +'0'

num =0,

strcpy

(p, t)

;while

(strcmp_bigint

(p, b)

>=0)

chu[wei++

]= num +

'0';

while

(strcmp_bigint

(t, b)

>=0)

} chu[wei]

='\0'

;//上鎖

}void

menu_bigint()

break

;case2:

/*減法運算*/if(

in_bigint

(a)&&

in_bigint

(b))

break

;case3:

/*乘法運算*/if(

in_bigint

(a)&&

in_bigint

(b))

break

;case4:

/*除法運算*/if(

in_bigint

(a)&&

in_bigint

(b))

break

;default

: cout <<

"選擇輸入有誤!"

<< endl;

break;}

cout << endl;

}int

main()

大整數四則運算

儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...

大整數四則運算

電腦可以處理很大的數。但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。核心思想 陣列存數,乙個單元存一位 下面是大整數儲存,比較的模板 struct bign bign change char str return a 比較兩...

大整數的四則運算

由小學時候的加法運算可以歸納出對其中一位進行加法的步驟 將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。高精度加法的做法與此完全相同,可以直接來看實現的 程式 include include 定義乙個結構體儲存大整數 struct bign 將整數轉換為bign ...