我的作业是抛硬币模拟,必须运行 10、100、1000、100,000 和 100 万次试验。换句话说,程序的一次执行涵盖了所有六次试验。实际抛硬币的代码必须在另一个函数中完成。我想知道是否可以编写一个具有多个非嵌套循环的程序,例如:
for(unsigned int counter = 1; counter <= 10; counter++)
for(unsigned int counter = 1; counter <= 100; counter++)
等等
编辑:输出必须如下所示:
Trials: 10 Heads: 30% Tails 70%
Trials: 100 ….
等等。忘记包含此内容,抱歉!
显然,这写起来非常乏味,而且我不想调用我的 coinToss 函数六次;但我不确定如何模拟每次试验下的抛硬币(10...100 万次)。
最佳答案
有很多方法可以做到这一点。这里有一些。
1) 使用外循环生成试验次数。如果试验次数遵循容易生成的模式(您的问题就是这种情况),则效果很好。
for (unsigned int trials = 10; trials <= 1000000; trials *= 10)
for(unsigned int counter = 1; counter <= trials; counter++)
{
// do stuff
}
2) 如果模式不易生成,请使用具有任意值的表格。
unsigned int trials[] = { 15, 97, 1003, 10100, 100444, 999999, 0 };
for (int i = 0; trials[i] > 0; i++)
for(unsigned int counter = 1; counter <= trials[i]; counter++)
{
// do stuff
}
3) 将循环放入函数中并多次调用该函数。
void foo(unsigned int trials)
{
for(unsigned int counter = 1; counter <= trials; counter++)
{
// do stuff
}
}
int main(void)
{
foo(10);
foo(100);
foo(1000);
foo(10000);
foo(100000);
foo(1000000);
}
您还可以将 3) 与 1) 或 2) 结合起来。例如,将 3) 与 1) 组合起来如下所示
void foo(unsigned int trials)
{
for(unsigned int counter = 1; counter <= trials; counter++)
{
// do stuff
}
}
int main(void)
{
for (unsigned int trials = 10; trials <= 1000000; trials *= 10)
foo(trials);
}
关于c - 在 C 中使用多个 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543725/