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

C++生成随机数一维数组后无法正常打印该如何解决?

C++随机数组生成代码修复方案

现有代码错误点

  • 两处for循环的判断条件写反:你使用了i > n的判断逻辑,初始值为0的i永远不可能大于输入的正整数n,循环体完全不会执行,自然无法生成和打印数组内容
  • create函数声明了返回int*类型,但函数末尾没有执行return arr;语句,导致main函数拿到的数组指针是非法野指针,即使循环正常执行也会触发内存访问错误
  • 未初始化随机数种子,后续每次运行程序生成的随机数组内容都会完全相同(可选优化项)

修正后完整代码

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int *create(int n)
{
    int *arr = new int [n];
    // 循环条件修改为i < n
    for (int i = 0; i < n; i++)
    {
        arr[i] = rand() % 100;
    }
    // 补全返回值
    return arr;
}

int main ()
{
    // 初始化随机数种子,保证每次运行生成的随机数不同
    srand((unsigned int)time(NULL));
    int n = 12;
    int *arr = create(n);
    
    cout << "this is the array: ";
    // 循环条件修改为i < n,移除多余分号
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    
    delete[] arr;
    return 0;
}

核心改动说明

  • 补全了<cstdlib>、<ctime>头文件引用,适配随机数相关函数的调用要求
  • 将两处循环判断条件修改为i < n,保证循环能执行n次,完成数组赋值和打印逻辑
  • 在create函数末尾添加return arr;,正常返回申请到的堆内存数组首地址
  • 新增随机数种子初始化语句,避免每次运行生成的随机数组完全重复
  • 移除了main函数中for循环末尾多余的无效分号

内容的提问来源于stack exchange,提问作者Fatima Syed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:06:02