Почему бы не использовать цикл while для FIZZBUZZ в C?

Кодировал на C только около месяца, но удивлялся, почему цикл while не использовался чаще для FIZZBUZZ. Это не так чисто или по какой-то другой причине? Вот что я придумал:

int main()
{
    int num=1;
    while(num<=100)
    {
        if (num%3==0 && num%5==0)
        {
            printf("FIZZBUZZ!!!\n");
        }
        else if (num%3==0)
        {
            printf("FIZZ!!!\n");
        }
        else if (num%5==0)
        {
            printf("BUZZ!!!\n");
        }
        else
        {
            printf("%d\n", num);
        }
        num++;
    }

    return 0;

}

1 ответ

Решение

Ваш цикл может быть аккуратно сложен в for цикл:

for(int num = 1; num <= 100; ++num)

Здесь есть два преимущества:

  • num находится в пределах цикла, когда до того, как оно истекает while, Ограничение переменных до минимально возможного объема является хорошим эмпирическим правилом, поскольку оно сводит к минимуму количество переменных, о которых нужно думать в любой заданной точке.

  • Диапазон, в котором будет работать ваша программа, теперь суммируется в одном месте: вы можете видеть границы (от 1 до 100) и шаг (1) внутри for, Такого рода диапазоны довольно хорошо сбалансированы для быстрого чтения и запоминания перед чтением тела цикла. Например, если вы теперь хотите проверять только нечетные числа, было бы сразу ясно прочитать num += 2 в for заголовок, а не спотыкаться на нем в самом конце тела цикла.

Другие вопросы по тегам