Если число делится на 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(" ");
}
}
Объяснение кода листинга программы
- Объявлена функция fizzbuzz с параметром limit типа int
- Внутри функции объявлена переменная i типа int и инициализируется значением 1
- Задано условие цикла for от 1 до limit
- Внутри цикла проверяется условие i % 15 == 0. Если это условие выполняется, то выводится
FizzBuzz - Если условие i % 15 != 0 выполняется, то проверяется условие i % 3 == 0. Если это условие выполняется, то выводится
Fizz - Если условие i % 15 != 0 и i % 3 != 0 выполняется, то проверяется условие i % 5 == 0. Если это условие выполняется, то выводится
Buzz - Если все условия не выполняются, то выводится значение i
- После вывода значения i выводится пробел
- Цикл продолжается до тех пор, пока значение i не станет больше limit
- В конце функции ничего не возвращается