首页 > 代码库 > 大整数字符串相加
大整数字符串相加
#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; }
大整数字符串相加
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。