#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 ++书籍研究中复制出来的,所以奇怪的是这段代码不起作用
答案 0 :(得分:1)
循环永远不会终止,因为文字常量1总是小于NUMLANZ
。
比较
for( i = 1; 1 <= NUMLANZ; i++ )
^
与
for( i = 1; i <= NUMLANZ; i++ )
^
另请注意,循环计数器从零开始更为常规:
for( i = 0; i < NUMLANZ; i++ )
在这种情况下,除了少一个字符之外没什么区别,但是如果你使用i
来索引一个数组,那么这很重要。