# 1.初識變數 編程本質就是通過一定的規則,去操縱數據,變數作為數據的載體,在程式中經常會被用到。與變數相聯繫的還有一個名詞叫數據類型,我們可以舉一個生活中的例子,來理解**數據類型-變數-數據**三者之間的關係 
// 3. Define Main Function
int main(int argc, char **argv) {
for (int i=0;i<1001;i++) {
s[i]='0';
a[i]=0, b[i]=0, c[i]=0;
} // If you use global variables, this initialization does not need used.
這裡如果使用全局變數,這個初始化可以不用。
4. 輸入(包含了處理)變數
// 4. Input and process variables
scanf("%s",s+1);
int lena = strlen(s+1);
for (int i=1;i<=lena+1;i++)
a[i] = s[lena-i+1] - '0';
scanf("%s",s+1);
int lenb = strlen(s+1);
for (int i=1;i<=lenb+1;i++)
b[i] = s[lenb-i+1] - '0';
int lenc = (lena>lenb)?lena:lenb;
- 真正的高精度計算到這裡才開始。計算代碼
// 5. Calculate
for (int i=1;i<=101;i++)
c[i] = 0;
for (int i=1;i<=lenc;i++) {
// c[i] = a[i] + b[i]; <-- Wrong!
c[i] = a[i] + b[i] + c[i]; // <-- Correct
// c[i] += a[i] + b[i]; <-- Plan B, Correct too
// 處理進位
c[i+1] = c[i] / 10;
c[i] = c[i] % 10;
}
// 處理 overflow
if (c[lenc+1]>0)
lenc++;
- 輸出
// 6. Output
for (int i=lenc;i>=1;i--)
printf("%d", c[i]);
return 0;
}
附: 完整代碼
// 1. Import libraries
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <cstring>
#include <cassert>
#include <vector>
// Import namespace 'std'
using namespace std;
// 2. Initialize variables
const int MAX = 1000;
char s[MAX+1];
int a[MAX+1], b[MAX+1],c[MAX+2];
// 3. Define Main Function
int main(int argc, char **argv) {
for (int i=0;i<1001;i++) {
s[i]='0';
a[i]=0, b[i]=0, c[i]=0;
} // If you use global variables, this initialization does not need used.
// 4. Input and process variables
scanf("%s",s+1);
int lena = strlen(s+1);
for (int i=1;i<=lena+1;i++)
a[i] = s[lena-i+1] - '0';
scanf("%s",s+1);
int lenb = strlen(s+1);
for (int i=1;i<=lenb+1;i++)
b[i] = s[lenb-i+1] - '0';
int lenc = (lena>lenb)?lena:lenb;
// 5. Calculate
for (int i=1;i<=101;i++)
c[i] = 0;
for (int i=1;i<=lenc;i++) {
// c[i] = a[i] + b[i]; <-- Wrong!
c[i] = a[i] + b[i] + c[i]; // <-- Correct
// c[i] += a[i] + b[i]; <-- Plan B, Correct too
// 處理進位
c[i+1] = c[i] / 10;
c[i] = c[i] % 10;
}
// 處理 overflow
if (c[lenc+1]>0)
lenc++;
// 6. Output
for (int i=lenc;i>=1;i--)
printf("%d", c[i]);
return 0;
}
複製之前看我一下
`Control`, 縮寫為Ctrl, 擴寫為唱,跳,rap,籃球。 你還敢Ctrl+C嗎?[========]
[========]
[========]
[========]
本文來自博客園,作者:Admin--002,轉載請註明原文鏈接:https://www.cnblogs.com/Py-Study0/p/High-precision_addition-114514.html