8.奇怪的信

153 阅读2分钟

题目描述

有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。
例如:5548,结果为12,等于 4 + 8 。
小明很苦恼,想请你帮忙解决这个问题。

输入描述

输入数据有多组。每组占一行,只有一个整整数,保证数字在32位整型范围内。

输出描述

对于每组输入数据,输出一行,每组数据下方有一个空行。

输入示例

415326
3262

输出示例

12

10

题目分析

题目要求我们计算出给定数各个位上数字为偶数的和。

单个数字不像数组可以遍历取到每一位的值,但是可以通过取模运算和整数除法来分解一个整数并获取其各位数字,主要的过程有以下两步:

  • 通过取余num % 10获取最后一位数字,%表示取模/取余运算,即一个整数除以另一个整数后的余数,最后一位是个位,无法被10整除,所以就成了余数,进而可以通过%取余运算取到。
  • 使用整数除法 num /= 10 来去掉 num 的最后一位数字。这个过程会一直重复,直到 num 变成0为止。

例如 image.png

代码编写

1.需要循环来接受多组数据的输入

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    while(cin>>n){
    
    }
    return 0;
}

2.需要取模%和除法/操作来获取每一位,直到n为0

while(n!=0){
    //获取n的最后一个数字
    int num = n%10;
    //将整数除以10,以便于处理下一个数字
    n /= 10;
}

3.判定n是否为偶数,偶数累加到sum上

int sum = 0;
if(num % 2 == 0){
    sum += num;
}

4.按照题目要求输出sum的值

cout << sum << endl;
cout << endl;

5.完整代码

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    while(cin >> n){
        int sum = 0;
        
        while(n!=0){
            int num = n % 10;
            n /= 10;
            if(num % 2 == 0){
                sum += num;
            }
        }
        cout << sum << endl;
        cout << endl;
    }
    return 0;
}