首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言求整數各位數字之和:模 10 除 10 經典算法

     編輯:C 語言問答

題目:輸入一個整數,輸出其各位數字之和

例如:輸入 12345 → 輸出 15 (1+2+3+4+5)。

核心算法:模 10 取末位,除 10 去末位

int sum_digits(int n) {
    int sum = 0;
    n = abs(n);              // 處理負數
    while (n != 0) {
        sum += n % 10;       // 取個位
        n /= 10;             // 去個位
    }
    return sum;
}

完整程序(含輸入校驗)

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    long long n;             // 支持更大範圍
    printf("請輸入一個整數: ");
    if (scanf("%lld", &n) != 1) {
        fprintf(stderr, "輸入無效\n");
        return 1;
    }

    int sum = 0;
    n = llabs(n);            // 長整數絕對值
    while (n != 0) {
        sum += n % 10;
        n /= 10;
    }
    printf("各位數字之和 = %d\n", sum);
    return 0;
}

關鍵點解析

進階變體

  • 遞歸寫法:return n==0?0:n%10+sum(n/10);
  • 字符串法:for(char *p=s;*p;p++) sum+=*p-'0'; 適合超長整數(> 64 位)。
  • 位運算優化:無直接位運算等價,十進制提取必須用除模。

常見錯誤

  1. 忘記處理負數 → 加 abs() 或 llabs()。
  2. 輸入 0 時循環不執行,sum=0 正確,但需確認邏輯覆蓋。
  3. 用 int 接收超大數導致溢出 → 用 long long 或字符串讀取。
  4. 此算法是數位 DP、大整數處理、校驗碼計算(如 Luhn 算法)的基礎構建塊,務必熟練掌握。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved
操作作用示例 (n=123)
n % 10取最低位數字3
n /= 10整數除法,截斷最低位12
while (n)直到 n 變 0 結束循環 3 次