函数rand()代码块没有编译

时间:2017-11-04 00:41:37

标签: random codeblocks

我尝试在codeblocks中编译这段代码但是不起作用,我不知道它产生了什么错误

#include<iostream>
#include<iomanip>
#include<cmath>
#include<ctime>
#include<cstdlib>

using namespace std;

int main()
{
const int NUMLANZ=1000;

int caras=0,cruces=0,i;
double volado,porcaras,porcruces;

srand(time(NULL));
for(i=1;1<=NUMLANZ; i++)
{
    volado= ((double) rand() / (RAND_MAX));
    if(volado>0.5)
        caras=caras+1;
    else
        cruces=cruces+1;
}
porcaras=(caras/double (NUMLANZ))*100;
porcruces=(cruces/ double(NUMLANZ))*100;
cout<<"\nCaras salio  "<<porcaras<<" por ciento de las veces";
cout<<"\nCruces salio  "<<porcruces<<"  por ciento de las veces";

return 0;
}

我是c ++代码的新手,我不知道编译是否产生了错误,因为这段代码是从c ++书籍研究中复制出来的,所以奇怪的是这段代码不起作用

1 个答案:

答案 0 :(得分:1)

循环永远不会终止,因为文字常量1总是小于NUMLANZ

比较

    for( i = 1; 1 <= NUMLANZ; i++ )
                ^

    for( i = 1; i <= NUMLANZ; i++ )
                ^

另请注意,循环计数器从零开始更为常规:

    for( i = 0; i < NUMLANZ; i++ )

在这种情况下,除了少一个字符之外没什么区别,但是如果你使用i来索引一个数组,那么这很重要。