You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:45:40