如何编写C++程序实现随机数组生成及指定数字统计功能
C++程序实现与代码修正
原代码存在的问题
- C++标准不支持
int array[n]这类变长数组,且定义数组时n未初始化,属于未定义行为 - 循环逻辑混乱:外层循环本应执行n次,内部却嵌套了一个执行10次的循环,还重新定义了变量
n,覆盖了输入的数值 - 未初始化随机数生成器,
rand()生成的随机序列固定不变 - 缺失输入自然数x及统计其出现次数的逻辑
下面是符合需求的完整代码:
#include <iostream> #include <vector> #include <cstdlib> #include <ctime> using namespace std; int main() { // 步骤1:输入n并创建数组填充0-10的随机数 int n; cout << "请输入自然数n(n<20):"; cin >> n; // 用vector替代变长数组,符合C++标准 vector<int> arr(n); // 初始化随机数生成器,保证每次运行生成不同序列 srand(time(nullptr)); for (int i = 0; i < n; ++i) { // 生成0到10之间的随机数(包含0和10) arr[i] = rand() % 11; } // 步骤2:输出数组所有元素 cout << "数组元素为:"; for (int num : arr) { cout << num << " "; } cout << endl; // 步骤3:输入自然数x int x; cout << "请输入自然数x:"; cin >> x; // 步骤4:统计x的出现次数并输出 int count = 0; for (int num : arr) { if (num == x) { ++count; } } cout << "数字" << x << "在数组中出现了" << count << "次" << endl; return 0; }
代码说明
- 使用
std::vector存储数组,避免C风格变长数组的兼容性问题 - 调用
srand(time(nullptr))初始化随机数种子,确保每次运行生成不同的随机序列 - 通过
rand() % 11生成0到10的随机数(rand()%m会生成0到m-1的整数,因此m取11可覆盖0-10区间) - 用范围for循环遍历数组,代码更简洁易读
- 单独实现统计逻辑,遍历数组计数与x匹配的元素
内容的提问来源于stack exchange,提问作者Daniel Klymchuk
相关产品推荐
相关产品推荐

