我正在使用OpenVMS在C中开发,我已经完成了一个代码,该代码放入1001(0-1000)个元素数组,1000(0-999)个0到50之间的随机数.这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int vet[1000], fre[50];
int i;
srand(time(NULL));
for(i=0;i<1000;i++){
vet[i]=(rand()%51);
}
for(i=0;i<1000;i++){
printf("%d\n", vet[i]);
}
for(i=0;i<1000;i++){
fre[vet[i]]=fre[vet[i]]+1;
}
for(i=0;i<51;i++){
printf("The number %d was generated %d times\n", i, fre[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
当我显示每个数字生成的次数时,我看到数字50的数字很大,有时比其他数字多一倍,有人可以帮助我吗?
已解决的代码我现在必须使用srand()
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int vet[1000], fre[51] = {0};
int i;
srand(time(NULL));
for(i=0;i<1000;i++){
vet[i]=(rand()%51);
}
for(i=0;i<1000;i++){
printf("%d\n", vet[i]);
}
for(i=0;i<1000;i++){
fre[vet[i]]=fre[vet[i]]+1;
}
for(i=0;i<51;i++){
printf("The number %d was generated %d times\n", i, fre[i]);
}
}
[EOB]
Run Code Online (Sandbox Code Playgroud)
谢谢你们
int vet[1000], fre[50];
for(i=0;i<51;i++){
printf("The number %d was generated %d times\n", i, fre[i]);
}
Run Code Online (Sandbox Code Playgroud)
问题1:您声明fre有50个元素,但是您使用51.
问题2:fre未初始化.
int vet[1000], fre[51] = {0};
Run Code Online (Sandbox Code Playgroud)
应该给你合理的输出.