兩個大數(50位以上)相乘

2021-06-15 08:02:02 字數 1647 閱讀 3091

廢話也不多說,這個純粹也是考一點點邏輯問題的,也很簡單:

**不是寫的很好,也沒有太多功夫去優化,請大牛勿噴。

#include#define n 101

//定義乙個存放結果的字元陣列

char sum[2*n + 1];

//將字元轉換成數字

int char_to_int(char ch)

}//將數字轉換成字元

char int_to_char(int ch)

}//計算兩個數之和

void add(int k,int k2, char one, char two)

; //用來判斷是否有進製

int c;

//先計算兩個有相同位數的部分

for(;i >= 0; max--,i--,j++) else

} //再計算其中乙個位數大於另外乙個數的位數的部分

i = k - k2 -1;

for(;i >= 0; j++,i--,max--) else

} //判斷最後是否有進製

if(add_1[j] == 1)

sum[j] = '\0';

}//將字元陣列反轉,因為加法是從低位開始相加的

void transvert(char str,int n)

}//分別計算其中乙個數的每一位與另外乙個數的每一位相乘

void add_to_twoarray(int k, int k2,char one,char two)

; for(line = 0; line < m; line++)

for(j = k,over = 0; j >= 0; j--,line++,over++)

if(add_[over] > 0)

a[line] = '\0';

for(j = 0; sum[j] != '\0'; j++)

b[j] = '\0';

count_num = j - 1;

transvert(a,line-1);

transvert(b,count_num);

if(count_num > line -1) else

} //最後求出結果的位數,然後進行反轉輸出

for(j = 0; sum[j] != '\0'; j++){}

transvert(sum,j -1);

printf("%50s",sum);

printf("\n\n");

}//輸入兩個大數,判斷哪個數比較大

void two_bignumber_add()

k = i - 1;

for(i = 0; two[i] != '\0'; i++){}

k2 = i - 1;

printf("\t\t--------------the result is:----------------");

printf("\n%50s\n",one);

printf("%50s\n",two);

printf("\t\t--------------------------------------------\n");

if(k >= k2) else if(k < k2)

}int main()

兩個大數(位數在50位以上)相加

有時候為了出題考一些人,有人就出了這麼一道題,其實其中邏輯也很簡單。廢話不多說,很簡單,請看原始碼 include define n 100 int char to int char ch char int to char int ch void add int k,int k2,char one,...

兩個大數相乘

兩個大數相乘 2007 08 27 00 35 question 1 用乙個整型陣列表示乙個大數,陣列的每個元素儲存大數的一位數字,則實際的大數d表示為 d a k 10的k 1次冪 a k 1 10的k 2次冪 a 2 10 a 1 其中a 0 儲存該大數的位數 實現兩個大數相乘 再此基礎上實現兩...

兩個大數相乘

兩個大數相乘 char multiply char char 給了兩個字串,每個都是代表了乙個很長的10進製表示的數 比如 char str1 23456789009877666555544444 char str2 346587436598437594375943875943875 最後求出他們的...