如何在C++中实现从用户输入的任意数量数值中找出最大值?
问题解答
需求可行性
该需求完全可以实现,即便要处理数千个数字的最大值计算也不存在性能问题。
需要学习的相关知识
- 循环控制结构:掌握
while或for循环的使用,用来重复读取用户输入,不需要手动声明数百个变量逐个接收输入 - 动态容器:学习C++标准库的
std::vector用法,可按需扩容存储任意数量的输入值,不需要提前固定变量数量 - 边界与异常处理:学会判断用户输入终止逻辑、处理非数字输入的异常场景、兼容用户未输入有效数字的极端情况
- 可选:标准库算法,
<algorithm>头文件提供了现成的std::max_element方法,可以直接返回序列中的最大值,不需要手动实现遍历比较逻辑
实现提示
你可以选择两种实现思路:
- 边输入边比较,不需要存储所有输入值:初始化最大值为double类型的最小值,每读取一个合法数字就和当前最大值对比,更大则更新最大值,直到用户结束输入
- 先存储所有输入值再统一计算最大值:把所有输入的数字存入
std::vector后,遍历对比求最大值,或者直接调用std::max_element得到结果
参考实现代码如下:
#include <iostream> #include <algorithm> #include <limits> using std::cout, std::cin, std::endl; int main() { double current_num; double max_val = std::numeric_limits<double>::min(); int input_count = 0; const std::string result = " is the greatest among the numbers given"; cout << "请输入任意数量的数字,输入非数字即可结束输入:" << endl; // 循环读取输入,遇到非数字输入时cin >> 返回false,结束循环 while (cin >> current_num) { input_count++; if (current_num > max_val) { max_val = current_num; } } system("clear"); if (input_count == 0) { cout << "未检测到有效数字输入" << endl; } else { cout << max_val << result << endl; } return 0; }
内容的提问来源于stack exchange,提问作者Kanra
相关产品推荐
相关产品推荐

