前言 這個周末感冒,一直沒寫程序,拿到題練習一下,我很奇怪的是這道題只能用全局數組,傳參總會出問題,gdb沒有調試出來,太詭異了 題目 [html] 題目描述: 實現一個加法器,使其能夠輸出a+b的值。 輸入: 輸入包括兩個數a和b,其中a和b的位數不超過1000位。 輸出: 可能有多組測試數據,對於每組數據, 輸出a+b的值。 樣例輸入: 2 6 10000000000000000000 10000000000000000000000000000000 樣例輸出: 8 10000000000010000000000000000000 ac代碼 [cpp] #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1002 char a[MAX], b[MAX], sum[MAX]; void bigDataPlus(); int main() { while(scanf("%s %s", a, b) != EOF) { bigDataPlus(); printf("%s\n", sum); } return 0; } void bigDataPlus() { int i, j, k, c, len_a, len_b; //初始化 memset(sum, 0, sizeof(sum)); len_a = strlen(a); len_b = strlen(b); //進位標識 c = 0; for(i = len_a - 1, j = len_b - 1, k = 0; i >=0 && j >= 0; i --, j --, k ++) { sum[k] = a[i] + b[j] + c - '0'; if(sum[k] > '9') { c = 1; sum[k] -= 10; }else { c = 0; } } //a > b while(i >= 0) { sum[k] = a[i] + c; if(sum[k] > '9') { sum[k] -= 10; c = 1; }else { c = 0; } k ++; i --; } //b > a while(j >= 0) { sum[k] = b[j] + c; if(sum[k] > '9') { sum[k] -= 10; c = 1; }else { c = 0; } k ++; j --; } //最後是否有進位的情況 if(c == 1) { sum[k ++] = '1'; } //翻轉 char temp; for(i = 0, j = k - 1; i < j; i ++, j --) { temp = sum[i]; sum[i] = sum[j]; sum[j] = temp; } } /************************************************************** Problem: 1198 User: wangzhengyi Language: C Result: Accepted Time:30 ms Memory:912 kb ****************************************************************/