輸入兩個整數 A, B,格式為「從個位起每三位加逗號」,如 -234,567,890。範圍 -10^9 < A,B < 10^9,輸出正常整數形式的 A+B。
'-',標記負號並去除。numC = len - len/4(每 4 字符含 1 個逗號)。sum += (c-'0') * 10^(numC-1),numC--。int parse(char s[14]) { // 最多 14 字符:符號+10位數字+3逗號
int sum = 0, len = strlen(s), sign = 1, digits = len;
if (s[0] == '-') { sign = -1; digits--; } // 去除符號
int numC = digits - digits / 4; // 實際數字位數
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
sum += (s[i] - '0') * pow(10, numC - 1);
numC--;
}
}
return sum * sign;
}
int main() {
char a[14], b[14];
int results[100], cnt = 0;
while (cin >> a >> b) {
results[cnt++] = parse(a) + parse(b);
}
for (int i = 0; i < cnt; i++) cout << results[i] << endl;
return 0;
}
pow(10, k) 返回 double,賦值給 int 可能有精度誤差,建議用整數循環累乘或預計算 int p10[10]。while(cin>>a>>b) 自動處理。int 內,無需大整數庫。若自定義 void swap(int *a, int *b),則 swap(&x, &y) 交換指針指向的值,swap(x, y) 調用 std::swap(引用參數)交換變量本身。兩者語義完全不同,切勿混淆。