小明想要快速知道任给一个正整数中有多少个奇数位(数位值是奇数),下面的C++代码是其实现,横线处应 该填入的代码是( )。 int N; cin >> N; int odd_count = 0; // 记录奇数的个数 int old_number = N; // 保存原数 while (N != 0){ if (_________________) odd_count += 1; N = (N - N % 10) / 10; } cout << old_number << "中共有 " << odd_count << " 个奇数";
A:N % 10 % 2 == 0
B:N % 10 % 2 == 1
C:N / 10 / 2 == 1
D:N / 2 / 10 == 0
正确答案:B
答案解析
从输入的正整数中逐位判断是否为奇数。每次循环通过取模运算 N % 10 获取当前最低位数字,该位值的奇偶性由其对 2 取模的结果决定:若余数为 1,则该位为奇数;若余数为 0,则为偶数。判断条件应基于 N % 10 的奇偶性,而非高位部分或整体数值的除法结果。循环中 N 被不断去掉最低位,直到变为 0,过程中需统计满足奇数条件的位数。条件表达式必须能正确反映当前最低位是否为奇数。
试卷来源:202603 CCF-GESP编程能力等级认证C++一级真题