在C中使用多个循环

时间:2018-09-27 19:15:45

标签: c loops

我的任务是投币模拟,必须进行10、100、1000、100,000和1百万次试验。换句话说,该程序的一次执行包含所有六个试验。实际抛硬币的代码必须在另一个功能中完成。我想知道是否可以编写具有多个非嵌套循环的程序,例如:

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 ... 1百万)下还能如何模拟投币游戏。

1 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。这里有一些。

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);
}