题目

读入一个 100~999 的整数,输出其各位数字之和。

输入格式:一行输入一个三位正整数 n。

输出格式:输出一个整数,表示该数各位数字之和,末尾换行。

数据范围与约定:100 ≤ n ≤ 999。

思路与算法

1. 算术拆解数位
百位数:n / 100(整数除法直接舍去低位);
十位数:n / 10 % 10(先除以 10 抹去个位,再对 10 取余取出十位);
个位数:n % 10。

2. 效率与拓展
直接数学运算比转换为字符串再遍历更高效,内存开销为 O(1)。若扩展为任意位数的正整数,可用 while (n) { sum += n % 10; n /= 10; } 循环处理。

完整程序

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1) {
        return 1;
    }

    // 经典拆数位:
    // 个位:直接对 10 取余
    int ones = n % 10;
    // 十位:先除以 10 抹去个位,再对 10 取余
    int tens = n / 10 % 10;
    // 百位:整数除以 100 直接舍去低两位
    int hundreds = n / 100;

    printf("%d\n", ones + tens + hundreds);
    return 0;
}

运行示例

输入:

358

输出:

16