【发布时间】:2018-04-10 06:14:21
【问题描述】:
基本上,我的程序从随机数生成器中获取一个随机数,并计算通过该确切数字与另一个随机生成的数字(内部循环)匹配所需的次数。然后它进行计数并将其添加到总和中。然后外循环运行 50 次。我的问题是我的教授不想在程序中使用goto 或break 语句。这是我的第一门计算机编程课程,我不太确定如何更改程序以删除 break 语句并使其按应有的方式工作。该程序使用break 语句可以100% 正常工作。提前感谢您的帮助!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main()
{
int randNumA = 0; int randNumB = 0; int i = 0.0;
int iterationa = 0; int iterationb = 0;
float avgIteration = 0.0;
int sumIteration = 0;
srand(time(NULL));
for(i = 0; i < 50; i++)
{
int randNumB = rand() % 100;
printf("The random number selected is %d\n", randNumB);
int iterationb = 0;
while (1)
{
int randNumA = rand() % 100;
if (randNumA < randNumB)
{
iterationa++;
iterationb++;
}
else if(randNumA > randNumB)
{
iterationa++;
iterationb++;
}
else
{
iterationa++;
iterationb++;
printf("The final iteration was %d\n\n", iterationb);
break;
}
}
}
sumIteration = sumIteration + iterationa;
avgIteration = (float)sumIteration / (float)50;
printf("The average amount of iterations for each attempt were %f\n",
avgIteration);
return 0;
}
【问题讨论】:
-
i = 50;应该这样做。 -
它应该去哪里,@Nik?
-
我错过了嵌套的
while循环。这个建议行不通。你需要按照@ifconfig 的建议去做,除了bool之外,使用int,因为C中没有bool这样的东西 -
谢谢,@Nik 我忘了。习惯了 C++.... :)
-
或者,如果您在 while 循环上方声明
randNumA,您也可以这样做:while (randNumA != randNumB)。这可能是最简单的。
标签: c while-loop conditional