演算法-求n的階乘相加
阿新 • • 發佈:2020-12-18
一. 利用字串的一維陣列方法逐位運算:
高精度加法:
思路很簡單,通過陣列儲存每一位數,然後相加進位。
#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' 的操作。