c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100000
void reverse(char *str) {
int i, j;
char temp;
for (i = 0, j = strlen(str) - 1; i < j; i++, j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
void add(char *num1, char *num2, char *result) {
int carry = 0;
int i = 0;
int len1 = strlen(num1);
int len2 = strlen(num2);
reverse(num1);
reverse(num2);
while (i < len1 || i < len2 || carry != 0) {
int n1 = (i < len1) ? (num1[i] - '0') : 0;
int n2 = (i < len2) ? (num2[i] - '0') : 0;
int sum = n1 + n2 + carry;
result[i] = (sum % 10) + '0';
carry = sum / 10;
i++;
}
result[i] = '\0';
reverse(result);
}
int main() {
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN];
printf("請輸入第壹個整數:");
scanf("%s", num1);
printf("請輸入第二個整數:");
scanf("%s", num2);
add(num1, num2, result);
printf("兩個整數的和為:%s\n", result);
return 0;
}
在上面的代碼中,reverse函數用於將壹個字符串反轉。add函數用於將兩個字符串表示的超長整數相加,結果存儲在result字符串中。在add函數中,我們首先將兩個字符串反轉,然後按位進行加法運算,將結果存儲在result字符串中。最後,我們將result字符串再次反轉,以得到正確的結果。
需要註意的是,在進行加法運算時,需要考慮到進位的情況。當兩個數的位數不同時,需要在較短的數前面補0,以便按位相加。