如何用C++统计用户输入的4位整数中数字1的出现次数
C++ 统计4位整数中1出现次数的实现方案
前置修正
你现有代码的条件判断中使用了单&(按位与运算符),此处逻辑需要用双&&(逻辑与运算符),避免出现非预期的判断结果。
两种实现思路
- 思路1:数值逐位拆解法
已经确认输入为4位整数的前提下,可以通过取模、除法操作逐位取出数字判断:- 初始化计数器为0
- 用
临时变量 % 10取出当前数字的最后一位,判断是否等于1,符合条件则计数器+1 - 执行
临时变量 /= 10丢弃已经判断过的最后一位 - 重复上述操作4次即可得到最终统计结果
- 思路2:字符串遍历法
直接将整数转为字符串,遍历每个字符判断是否为'1'即可,代码实现更简洁,不需要做数值运算。
可运行的完整代码示例
逐位拆解版本
#include <iostream> using namespace std; int main() { int num; cout << "请输入一个4位整数:" << endl; cin >> num; if (num > 999 && num < 10000) { int count = 0; int temp = num; // 用临时变量操作,保留原输入num的值 for (int i = 0; i < 4; i++) { if (temp % 10 == 1) { count++; } temp /= 10; } cout << "数字中1的出现次数为:" << count << endl; } else { cout << "您输入的不是4位整数。" << endl; } return 0; }
字符串遍历版本
需要引入<string>头文件使用字符串相关工具:
#include <iostream> #include <string> using namespace std; int main() { int num; cout << "请输入一个4位整数:" << endl; cin >> num; if (num > 999 && num < 10000) { int count = 0; string num_str = to_string(num); for (char c : num_str) { if (c == '1') { count++; } } cout << "数字中1的出现次数为:" << count << endl; } else { cout << "您输入的不是4位整数。" << endl; } return 0; }
内容的提问来源于stack exchange,提问作者Santiago Uribe Gil
相关产品推荐
相关产品推荐

