from:
用int數模仿真整數的每乙個位,大於10的要進製,負數要借位。
#include #include #define max_digit 500
//大數運算:加法
int multiply(int *a,int *b,int *&result);
//大數運算:乘法
int add(int *a,int *b,int *&result);
//大數運算:減法
int sub(int *a,int *b,int *&result);
//逐位調整大數,如result為11 9 22 -3 -2調整為:1 0 3 9 -3,然後再對符號提公升到最高位: 9 9 6 0 2... ... -1
//表示大數的值為-20699
void ajustencodearray(int *&result,unsigned int imaxnum);
//輸出大數
void printbignum(int *result);
//把個位在高位的字元陣列轉為個位在低位(下標0)的整型陣列
void carray2revdigitarray(char *carray,int *digitarray,unsigned int inum);
//大數運算:加法
int add(int *a,int *b,int *&result)
int i=0,j=0;
//初始化result陣列
for(i=0;i=0;--i)
} //從低位開始往上調整,規則:大於10的正數要進製,負數要借位
for(i=0;i0)
else if(result[i]<0)
} //若有效最高位為負數,需要對負號進行提公升,就是對高位與餘下低位進行一次減法
if(result[inumflag]<0)
; iminuend[inumflag] = iweight; //被減數
result[inumflag] = 0; //構造減數
for(i=0;i=0;--i)
printf("\n");
}
void carray2revdigitarray(char *carray,int *digitarray,unsigned int inum)
{ int i = 0;
unsigned int ilen = strlen(carray);
//初始化digitarray
for(i=0; i
大整數運算之 大整數加法 減法 乘法
其實大整數的問題都是在像我們打草稿的時候列豎式一樣的,不要告訴我你不知道什麼叫豎式 其實我開始也不知道它叫這個名字 所謂豎式,就是你打草稿算算術的方法,小學知識 比如你寫 11 9 11 9 20數a,b,求和,求差 數的長度不超過1000 貼個 先輸入乙個數,代表資料的組數n,然後輸入n組a b ...
c 大整數加法 減法 乘法
大整數加法 大整數減法 大整數乘法 大整數除法 還未寫 大整數的加法 先對資料進行預處理是兩個大整數的位數相等,位數少的那個數在高位補0,使兩數的位數相等,便於計算資料的進製,只需要在函式呼叫的結尾檢查一下最高為是否存在進製的情況,如果需要進製則只需要在最後將進製的數加入到返回值中。加法是對兩個數從...
大數加法 減法 乘法 除法
大數加法 實現 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 ...