C++查找三位整数最大数位问题及代码错误求助
问题排查与实现方案
现有代码错误点
- 仅提取了一次个位数位就直接输出,没有遍历三位整数的另外两个数位,也没有任何大小比较逻辑
num / 10;是无效运算,没有将计算结果赋值回num变量,num的数值全程没有发生变化- 没有覆盖三位整数的全数位处理逻辑,自然无法得到最大数位结果
正确实现思路
因为题目明确是三位整数,我们可以按以下步骤实现:
- 读取输入的三位整数
- 初始化最大值为第一个提取的个位数位
- 连续处理剩余的十位、百位两个数位:
- 将原数整除10,移除已经处理过的最右侧数位
- 提取当前最右侧数位
- 和当前最大值对比,若更大则更新最大值
- 所有数位处理完成后输出最大值
可运行参考代码
适配三位整数的版本
#include<iostream> using namespace std; int main() { int num, max_digit; cin >> num; // 先取个位作为初始最大值 max_digit = num % 10; // 处理十位 num = num / 10; int current = num % 10; if (current > max_digit) max_digit = current; // 处理百位 num = num / 10; current = num % 10; if (current > max_digit) max_digit = current; // 输出结果 cout << max_digit; return 0; }
适配任意位数正整数的通用版本
#include<iostream> using namespace std; int main() { int num, max_digit = 0; cin >> num; while (num > 0) { int current = num % 10; if (current > max_digit) max_digit = current; num = num / 10; } cout << max_digit; return 0; }
内容的提问来源于stack exchange,提问作者Julian Williams
相关产品推荐
相关产品推荐

