函数rand()的代码块犯规编译
问题描述:
我尝试编译代码块,但不工作的代码,我不知道它是什么产生错误函数rand()的代码块犯规编译
#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总是小于NUMLANZ
。
比较:
for(i = 1; 1 <= NUMLANZ; i++)
^
与
for(i = 1; i <= NUMLANZ; i++)
^
还请注意,这是更传统的循环计数器从零开始:
for(i = 0; i < NUMLANZ; i++)
在这种情况下,它没有什么区别其他那么少一个字符,但是如果您使用i
为例如数组索引e,这是至关重要的。
即使您不知道如何使用调试器,只需在一些行后面添加cout语句,并查看它崩溃或给出错误的位置.... –