注册 登录
编程论坛 C++教室

rand()函数的使用问题

A306452792 发布于 2011-03-24 13:56, 518 次点击
为什么输出时,有一个奇怪的数
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,j,t;
int a[100];
srand((int)time(NULL));
for(i=0;i<10;i++)
a[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));
for(j=0;j<9;j++)
for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
cout<<"输出的是个数从小到大的排列为:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
5 回复
#2
sdupoplar2011-03-24 14:56
程序没发现错误,你在什么环境下编译运行的?
#3
Lyone2011-03-24 15:51
回复 楼主 A306452792
for(j=0;j<9;j++)
for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
你前面初始化了a[0~9]的值,但是这个循环里。当j=0,i=9的这一步时。a[10]也参与到了判断。于是奇怪的数字就进来了。
#4
sdupoplar2011-03-24 16:12
3楼 Lyone的回答是对的,开始没仔细看,只注意了rand()的使用没错。
#5
lucky5635912011-03-25 07:52
i最大等于8吧?怎么可能等于9
#6
lucky5635912011-03-25 07:55
RAND_MAX+1溢出了,rand()的在你这正确用法是rand()%RAND_MAX+1.0
1