【发布时间】:2021-04-05 16:53:07
【问题描述】:
double randomx,randomy,randomz,dia;
#define DROP_RAD 60
#define particleradi 3
for (i = 0; i<30; i++)
{
{
randomx=2*((float)rand()/RAND_MAX)-1;
randomy=2*((float)rand()/RAND_MAX)-1;
randomz=2*((float)rand()/RAND_MAX)-1;
randomx=randomx*(DROP_RAD -2*particleradi);
randomy=randomy*(DROP_RAD -2*particleradi);
randomz=randomz*(DROP_RAD -2*particleradi);
dia=randomx*randomx+randomy*randomy+randomz*randomz;
dia=sqrt(dia);
} while(dia>DROP_RAD);
printf(" id=%d, x=%lf, y=%lf, z=%lf , dia=%lf\n ",i,randomx,randomy,randomz,dia);
我得到的 dia 值大于 DROP_RAD,即使 while 条件应该是这样。请帮忙。
【问题讨论】:
-
你的
while循环,就目前而言,是一个空循环。您是否忘记了开头的do? -
请注意,当缩进正确时,您的
for循环永远不会关闭,并且您的do循环缺少do- 甚至无法编译。剩下的要发吗?
标签: c loops while-loop do-while