导读:本期聚焦于小伙伴创作的《如何正确统计输入数字中偶数数字的个数并避免整数除法导致首位丢失》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何正确统计输入数字中偶数数字的个数并避免整数除法导致首位丢失》有用,将其分享出去将是对创作者最好的鼓励。

在编程入门练习里,统计一个整数中输入数字为偶数的个数是一个常见题目。不少同学直接用整数除法循环除以10来逐位处理,却可能在边界条件下漏掉最高位,导致统计结果偏小。下面先通过示例说明问题根源,再给出稳妥写法。

如何正确统计输入数字中偶数数字的个数并避免整数除法导致首位丢失

为什么整数除法会丢失首位

假设我们输入数字为 1234,希望统计其中偶数数字 2 和 4 的个数。若用如下逻辑:

#include <iostream>
using namespace std;
int main() {
    int n = 1234;
    int count = 0;
    while (n > 0) {
        int digit = n % 10;   // 取末位
        if (digit % 2 == 0) {
            count++;
        }
        n = n / 10;           // 去掉末位
    }
    cout << count << endl;
    return 0;
}

上述代码其实能正确统计 1234 中的偶数位。但在某些变体中,开发者会先写 n = n / 10 再取模,或在判断条件上误用整数除法结果,就可能跳过首位。例如下面错误写法:

n = 1234
count = 0
while n > 0:
    n = n // 10      # 先整除,末位被丢弃
    if n % 2 == 0:   # 此时取的是新末位,原首位永远碰不到
        count += 1
print(count)

这种顺序错误会让原数字的最高位在第一次循环就被除掉,永远无法参与判断。

避免首位丢失的可靠方法

方法一:先转字符串再统计

把数字当成字符序列处理,每一位都不会因除法消失,逻辑最直观:

s = input().strip()   # 输入如 123456
count = 0
for ch in s:
    if ch.isdigit() and int(ch) % 2 == 0:
        count += 1
print(count)

方法二:正确顺序的取模循环

若坚持用数值拆分,务必先取模获得当前末位,再执行整除:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        while (n > 0) {
            int d = n % 10;   // 先取末位
            if (d % 2 == 0) {
                count++;
            }
            n = n / 10;       // 后去掉末位
        }
        System.out.println(count);
    }
}

小结

统计偶数数字个数时,核心是保证每一位都被访问到。字符串法最简单且不怕首位丢失;数值法只要坚持先取模后整除,也能得到正确结果。避免在一开始就做整数除法而把高位吞掉,就能彻底解决首位丢失问题。

偶数统计整数处理数字拆分修改时间:2026-07-30 01:51:19

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。