簡單大數加法
簡單大數減法, 預設大數p大於等於q,答案放在p裡可以實現連減#include
#include
#include
using namespace std;
char p[
100]
=, q[
100]=;
// 大數加法--可以實現連加 p+q
// 大數p, q相加 再把結果放在p
void
add(
char
* p,
char
* q)
// 假如這個數更長,更短的話不用考慮
while
(q[j]
!='\0'
)// p[k]要是原來有數還要再加上本身這個數,再考慮進製
while
(t)}
intmain()
簡單大數乘法#include
#include
#include
using namespace std;
char p[
100]
=, q[
100]=;
// 大數減法--可以實現連減 p-q
void
sub(
char
* p,
char
* q)
,k =0;
// 借助整數會更好寫,字元不好處理借位的
for(i =
0; p[i]
!='\0'
; i++
) ans[i]
=(p[i]
-'0');
for(i =
0,j =
0; p[i]
!='\0'
&& q[j]
!='\0'
; i++
,j++
) k++;}
while
(ans[k]==-
1)k++
; i++;if
(ans[k]
>=0)
break;}
while
(p[i]
!='\0'
)// 使k等於原來的長度
// 開始去後導0
while
(ans[k-1]
==0&& k-
1>=
0) k--
;for
(i =
0; i < k; i++
) p[i]
= ans[i]
+'0'
; p[i]
='\0';}
intmain()
#include
#include
#define max 1000
// 大數的最大位數
intmultiplication
(char num1,
char num2,
int sum)
;int b[max+10]
=;int c[max*2+
10]=;
len1 =
strlen
(num1)
; len2 =
strlen
(num2)
;for
(j =
0, i = len1-
1; i >=
0; i--
)//把數字字元轉換為整型數 並且倒過來低位在前
a[j++
]= num1[i]
-'0'
;for
(j =
0, i = len2-
1; i >=
0; i--
) b[j++
]= num2[i]
-'0'
;for
(i =
0; i < len2; i++)}
for(i =
1; i < max*
2; i++)}
len = max*2;
while
(c[len]==0
&& len >=
1) len--
;//跳過高位的0
for(
; i >=
1; i--
) sum[i]
= c[i]
;return len;
}int
main()
;// 存放計算的結果,低位在前,高位在後,即sum[0]是低位
char num1=
"12"
;// 第乙個大數
char num2=
"12"
;// 第二個大數
len =
multiplication
(num1, num2, sum)
;// 輸出結果
printf
("%s * %s = \n"
, num1, num2)
;for
(i = len; i >=
1; i--
)printf
("%d"
, sum[i]);
printf
("\n");
return0;
}
大數加減乘除
include include include include includeusing namespace std compare比較函式 相等返回0,大於返回1,小於返回 1 int compare string str1,string str2 if cf 0 str char cf 0 st...
大數加減乘除
對於大數的加減乘除都要先把輸入的大數字串轉成倒序的陣列,再進行運算。字串的處理 scanf s s a1,b1 len 0 for int i strlen a1 1 i 0 i len 0 for int i strlen b1 1 i 0 i len max strlen a1 strlen b...
大數的加減乘除
當數的位數非常大而常規的資料型別不足以儲存的時候,可以考慮使用大數。即用乙個長的陣列來儲存相應的位數,如int a 100 a的每一位儲存一位數字或幾位數字,根據常規的加減乘除運算對陣列進行操作。使用string型別對陣列進行操作,雖然比用整型簡便,但可 能增加了執行時間。pku1001 expon...