rand()/101怎么会出现一个很大的负数?
void InitNode(PStuNode p_Curr)
{
int i = 1;
static int StuID = 1;
srand( (unsigned)time(NULL));
//随机生成学生成绩 就这里!!!!!!!!!
//Mark数组中存储本学生语数外三们成绩,随机生成的
//但有时候偶尔会出现会出现很大的负数,这是怎么回事?
//我找不到原因,所以又加个if来确定其值的范围
for(i = 0; i < 3; i++)
{
p_Curr-> Mark[i] = rand()%101;
//if(p_Curr-> Mark[i] > 101 && p_Curr-> Mark[i] < 0 )
//{
//i--;
//}
}
p_Curr-> Mark[3] = (p_Curr-> Mark[0] + p_Curr-> Mark[1] + p_Curr-> Mark[2])/3;
i = 1;
while(1 == i)
{
p_Curr-> StuID = StuID;
cout < < "请输入学号 ";
cout.fill( '0 ');
cout.width(3);
cout < <StuID;
cout < < "的学生姓名: ";
cin> > p_Curr-> StuName;
cout < <endl;
if(p_Curr-> StuName[9] < 0)
{
i = 0;
}
else
{
cout < < "您输入的字符数已超过10个的最大限度! " < <endl;
}
}
StuID++;
}
[解决办法]
int rand( void );
Remarks
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX
The constant RAND_MAX is the maximum value that can be returned by the rand function. RAND_MAX is defined as the value 0x7fff.
是不是你的p_Curr-> Mark越界了?
[解决办法]
rand()/101
==》
rand()%101
[解决办法]
恩, 程序中是用的 rand()%101 啊 ·····
看标题,以为楼主你写错了~
汗 ~
[解决办法]
p_Curr-> Mark[i] = rand()%101;
cout < <p_Curr-> Mark[i] < < '\t '; //把数据输出来看看,不应该会出现负数的情况
[解决办法]
如果确实是有负数,
那么尝试 自定义 RAND_MAX 为有符号数据的极限值!