讀入一個數字字串(可超大,超出 long long 範圍),計算各位數字中**偶數位**的總和並輸出。
#include#include int main() { char num[101] = {0}; // 支援 100 位數 scanf("%100s", num); // 防緩衝區溢位 int sum = 0; for (int i = 0; num[i] != '\0'; i++) { int digit = num[i] - '0'; if (digit % 2 == 0) sum += digit; } printf("%d\n", sum); return 0; }
%s 讀入字元陣列,避免整數溢位,支援超大數字。num[i] - '0' 將 ASCII 碼轉為對應整數 (0-9)。digit % 2 == 0,注意 0 是偶數,會被加入總和(不影響結果)。scanf("%100s", num) 限制最大讀取長度,防止溢位攻擊。#includeint main() { long long n; scanf("%lld", &n); int sum = 0; while (n != 0) { int d = n % 10; if (d % 2 == 0) sum += d; n /= 10; } printf("%d\n", sum); return 0; }
針對「位數運算」類題目,**字串處理法最通用、最安全**,不受資料型別範圍限制,是競程與面試的標準解法。