卡码网C++基础课 |8. 奇怪的信

目录

前言

一、题目描述

二、解题思路

1.题目分析

2.代码编写

3.完整代码

总结

前言

仅个人记录所用

源自卡码网的C++基础课

“这门C++基础课 帮助 编程零基础学员快速学习刷算法题所需要的基础语法知识,学完之后,再来刷代码随想录,或者自己去刷编程题,基本不会有语法方面的困惑了,可以帮助大家快速上手刷题。 ”

第八题包含以下内容:

  • 取模运算
  • 整数除法
  • 判断一个数字是否为偶数

一、题目描述

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

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

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

输入示例:

415326

3262

输出示例:

12

 

10
 

二、解题思路

1.题目分析

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

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

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

image-20230920115059898

2.代码编写

根据题目要求,需要使用循环来接收多组数据的输入。

按照题目分析,我们需要使用取模运算和整数除法来获取每一位,直到n变为0

想要判定是否是偶数(即可以被2整除a % 2 == 0),可以使用if进行判断, 如果是偶数,则累加到result总和上。

当循环结束,按照题目要求的格式将result结果的值输出。

3.完整代码

#include<iostream>
using namespace std;
int main() {
  //  声明变量 n 和 a,用于存储输入的整数和中间计算的结果
    int n, a;
  // 读取输入的整数,并将其存储在变量 n 
    while (cin >> n) {
      //  定义变量result,存储计算的结果
        int result = 0;
      // 对整数 n 的每一位进行处理,直到 n 变成0
        while (n != 0) {
          // 获取 n 的最后一位数字
            a = (n % 10);
          // 将整数 n 除以10,以便处理下一位数字
            n = n / 10;
          // 最后一位是否可以被2整除,如果可以,则是偶数,将其值累加到 result 中
            if (a % 2 == 0) result += a;
        }
      // while 循环完成,将 result 的值输出
        cout << result << endl;
      // 每次循环迭代之间输出一个空行
        cout << endl;
    }
}

另外还有一种用string的方法,了解一下。

#include <iostream>
#include <string>

using namespace std;

int main(){
    string s;
    while(cin >> s){
        int sum = 0;
        for (int i = 0; i < s.size(); i ++ ){
            int num = s[i] - '0';
            if(num % 2 == 0){
                sum += num;
            }
        }
        
        cout << sum << endl << endl;
    }
    
    
    return 0;
}


总结

这节课学习了使用取模运算和整数除法来分解一个整数并获取其各位数字,取模运算是用来计算一个整数除以另一个整数后的余数,通常用于判断一个数是否能被另一个数整除,以及计算一些循环和条件操作的条件。例如,可以使用取模运算来判断一个整数是否为偶数,因为如果一个整数除以2的余数是0,则它是偶数,否则是奇数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值