Если число делится на 3 без остатка, то на экран выводится слово 'Fizz' - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Занимаюсь на одном ресурсе (не буду заниматься пиаром, да и карается наверное это здесь). Учу язык Си + читаю основы математической логики , т.к я начинающий в этой теме и думаю мне это не помешает. Вопрос в следующем - был урок про функции if else, было рассказано как они функционируют. Мне даже показалось - что я понял. Мне выдали задание следующее : Напишите функцию fizzbuzz, которая принимает в качестве параметра число limit типа int. В функции должен быть цикл, который проверяет цифры от 1 до limit, и: если число делится на 3 без остатка, то на экран выводится слово 'Fizz' если число делится на 5 без остатка, то на экран выводится слово 'Buzz' если число делится и на 3, и на 5 без остатка, то на экран выводится слово 'FizzBuzz' в противном случае на экран выводится само число Пример вывода: 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Как я не делал, у меня не получалось. Посмотрел решение учителя и там был следующий код :
void fizzbuzz(int limit)
{
    int i;
 
    for (i=1; i<=limit; ++i) {
        if (!(i % 15))
            printf("FizzBuzz");
        else if (!(i % 3))
            printf("Fizz");
        else if (!(i % 5))
            printf("Buzz");
        else
            printf("%d", i);
 
        printf(" ");
    }
}
Расскажите пожалуйста , для чего в скобках стоит знак "!"? Что он здесь выполняет? Да и при возможности вообще объясните ход решения, как то я не додумался до этого...

Решение задачи: «Если число делится на 3 без остатка, то на экран выводится слово 'Fizz'»

textual
Листинг программы
void fizzbuzz(int limit)
{
    int i;
 
    for (i=1; i<=limit; ++i) { //цикл от 1 до лимит
        if (!(i % 15)) //если i делится на 15 то вывести FizzBuzz
            printf("FizzBuzz");
        else if (!(i % 3)) //иначе если i делится на 3 то вывести Fizz
            printf("Fizz");
        else if (!(i % 5)) //иначе если i делится на 5 то вывести Buzz
            printf("Buzz");
        else
            printf("%d", i); // иначе если число не делится на 15, 3 и 5 просто вывести это число
 
        printf(" ");
    }
}

Объяснение кода листинга программы

  1. Объявлена функция fizzbuzz с параметром limit типа int
  2. Внутри функции объявлена переменная i типа int и инициализируется значением 1
  3. Задано условие цикла for от 1 до limit
  4. Внутри цикла проверяется условие i % 15 == 0. Если это условие выполняется, то выводится FizzBuzz
  5. Если условие i % 15 != 0 выполняется, то проверяется условие i % 3 == 0. Если это условие выполняется, то выводится Fizz
  6. Если условие i % 15 != 0 и i % 3 != 0 выполняется, то проверяется условие i % 5 == 0. Если это условие выполняется, то выводится Buzz
  7. Если все условия не выполняются, то выводится значение i
  8. После вывода значения i выводится пробел
  9. Цикл продолжается до тех пор, пока значение i не станет больше limit
  10. В конце функции ничего не возвращается

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы