c语言产生随机的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 11:03:53
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<conio.h>
main( )
{
int i,a[32767];
srand((unsigned)time(NULL));
for(i=1;i<=32767;i++ )
{printf("%d\t",i);
a[i]=rand()%100;
printf("%d\t",a[i]);}
getch();
}
为什么一运行,就停不了,把数据稍微改小一些比如32760之类的运行完之后,出现提示“内存分配错误”然后无法退出运行界面。如果是32766便出现“cpu遇到无效指令”之类的提示。什么原因呢?
问题不是每次都出现,有时能正常运行有时不行。

“出现提示“内存分配错误”然后无法退出运行界面。”
上面这个问题,估计程序中的两个32767,你只修改了前面一个。

“一运行,就停不了”
是因为,你把a[i-1]写成了a[i],导致给它赋值的时候,内存越界了
从而退出循环的条件得不到满足
c语言的数组是从0开始的!

应该修改为:

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<conio.h>
main( )
{
int i,a[32767];
srand((unsigned)time(NULL));
for(i=1;i<=32767;i++ )
{printf("%d\t",i);
a[i-1]=rand()%100; //注意是a[i-1]
printf("%d\t",a[i-1]);//注意是a[i-1]
}
getch();
}