廢話也不多說,這個純粹也是考一點點邏輯問題的,也很簡單:
**不是寫的很好,也沒有太多功夫去優化,請大牛勿噴。
#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 最後求出他們的...