C++: 查找30个数字中缺失的两个数(支持一次性输入)
C++: 查找30个数字中缺失的两个数(支持一次性输入)
本篇文章提供了一个C++程序,用于查找30个数字(1-30)中缺失的两个数。程序允许用户一次性输入所有28个已知数字,并使用逗号进行分隔。
**代码:**c++#include
std::vector
int main() { std::cout << '请输入28个不重复的整数(取值范围为1到30,使用逗号分隔):' << std::endl; std::string input; std::getline(std::cin, input); std::vector
while (std::getline(ss, token, ',')) { arr.push_back(std::stoi(token)); }
std::vector<int> missingNumbers = findMissingNumbers(arr);
if (missingNumbers[0] == -1) { std::cout << '数组大小不对或存在重复元素' << std::endl; } else { std::cout << '丢失的两个数字是: ' << missingNumbers[0] << ' 和 ' << missingNumbers[1] << std::endl; }
return 0;}
代码解释:
-
findMissingNumbers函数: - 接收一个包含28个数字的整型数组作为参数。 - 检查数组大小是否为28,如果不是,则返回-1表示输入错误。 - 使用unordered_set存储数组元素,用于快速查找重复元素。 - 遍历数组,检查每个元素是否在有效范围内 (1-30) 以及是否已经存在于集合中。如果发现错误,则返回-1。 - 遍历 1-30 的所有数字,查找不在集合中的数字,并将它们添加到missingNumbers向量中。 - 当找到两个缺失的数字时,返回missingNumbers向量。 -
main函数: - 提示用户输入28个数字,以逗号分隔。 - 使用stringstream和getline函数将输入字符串解析为整数数组。 - 调用findMissingNumbers函数查找缺失的数字。 - 根据函数返回值,输出找到的缺失数字或者错误信息。
特点:
- 用户友好: 允许用户一次性输入所有数字,提高了输入效率。- 输入验证: 检查数组大小和重复元素,确保输入数据的有效性。- 高效: 使用
unordered_set提高查找效率。
原文地址: https://www.cveoy.top/t/topic/cnmw 著作权归作者所有。请勿转载和采集!