#include <stdio.h> #include <string.h> char *reverse(char *str) { int i, j; for (i = 0, j = strlen(str) - 1; i < j; ++i, --j) { char tmp = str[i]; str[i] = str[j]; str[j] = tmp; } return str; } char *strsum(const char *add1, const char *add2, char *result) { int i, j, k; int carry = 0; for (i = strlen(add1) - 1, j = strlen(add2) - 1, k = 0; i >= 0 || j >= 0; --i, --j, ++k) { int a1, a2, sum; a1 = (i >= 0 ? (add1[i] - '0') : 0); a2 = (j >= 0 ? (add2[j] - '0') : 0); sum = carry + a1 + a2; result[k] = (char)(0xff & (sum % 10 + '0')); carry = sum / 10; } if (carry) { result[k++] = carry + '0'; } result[k] = '\0'; return reverse(result); } int main() { char add1[256]; char add2[256]; char result[260]; scanf("%s", add1); scanf("%s", add2); printf("%s\n", strsum(add1, add2, result)); return 0; }
大整數字符串相加
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.