一. 利用字符串的一维数组方法逐位运算:
高精度加法:
思路很简单,通过数组储存每一位数,然后相加进位。
#include <stdio.h> #include <string.h> int main() { char a[510] = { 0 }, b[510] = { 0 }; int a1[510] = { 0 }, b1[510] = { 0 }; int len_a, len_b; int i; scanf("%s%s", &a, &b); len_a = strlen(a); len_b = strlen(b); for (i = 0; i < len_a; i++) { a1[i] = a[len_a - i - 1] - '0'; } for (i = 0; i < len_b; i++) { b1[i] = b[len_b - i - 1] - '0'; } len_a = (len_a > len_b) ? len_a : len_b; for (i = 0; i <= len_a; i++) { a1[i] += b1[i]; if (a1[i] >= 10) { a1[i] = a1[i] % 10; a1[i + 1]++; } } for (int j = len_a; j >= 0; j--) { if (j==len_a&&a1[j] == 0) continue; printf("%d", a1[j]); } return 0; }
其中几个关键点:1.另外创建两个数组进行倒序存储,方便同位对其。
2.用字符串接受数,便于比较长度,注意字符串转化为数组时,要使用 -'0' 的操作。