长长的随机数组

Random Array of long

本文关键字:数组 随机 长长的      更新时间:2023-10-16

有人可以告诉我为什么编译时没有错误,但是在程序运行时它给出了错误的返回。我想创建一个随机的长数组并找到最大值。非常感谢你,对不起,因为我的英语。

#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <conio.h>
#include <malloc.h>
using namespace std;
void main()
{
long max,dem;
//srand(time(0));
long *A=(long *)malloc(1000000*sizeof(long));
srand(time(NULL));
for(long i=0;i<1000000;i++)
{
    A[i]=rand();
}
max=A[0];
for(long i=0;i<1000000;i++)
{
    if(A[i]<max)
           max=A[i];
}
dem=0;
for(long i=0;i<1000000;i++)
    {if(A[i]==max) dem++;}
cout <<"n Gia tri lon nhat:     "<<max;
cout <<"n Tan so xuat hien:     "<<dem;
getch();
}

if(A[i]<max)
       max=A[i];

看起来好像应该是

//     v-- here
if(A[i]>max)
       max=A[i];

旁注:您不会清理分配的内存。至少,你应该

free(A);
完成后

。除非不要这样做,因为处理裸记忆很少是一个好主意。请改用std::vector

#include <vector>
...
std::vector<long> A(1000000);

而不是

long *A=(long *)malloc(1000000*sizeof(long));

然后,您不必执行任何手动清理,因为std::vector 的析构函数将在A超出范围时处理释放。 std::vector重载[]运算符,使其像普通数组一样可用(对于许多意图),因此您不必更改其余代码即可正常工作。

。除了一件事:

void main()

不是标准C++;因此,GCC 和 Clang 拒绝编译您的代码。你应该使用

int main()

相反。同样,不需要进一步的更改;main函数有一个特殊的例外,如果没有显式返回任何值,它就会返回0。按照惯例,0表示成功完成到周围的外壳;如果出现错误,main应返回非零值。