Больше вариантов: else if
С помощью if и else программа выбирает между двумя вариантами. Часто их больше. Футбольный матч, например, заканчивается одним из трёх способов: выигрывают хозяева, выигрывают гости или игра заканчивается вничью. Для большего числа вариантов добавляют ветки else if, у каждой из которых своё условие:
int home_goals = 3;
int away_goals = 2;
if (home_goals > away_goals) {
printf("Победили хозяева!\n");
} else if (home_goals < away_goals) {
printf("Победили гости!\n");
} else {
printf("Ничья!\n");
}Программа выведет:
Победили хозяева!Программа проверяет условия сверху вниз и выполняет блок первого истинного. Остальные ветки она пропускает, даже если некоторые из следующих условий тоже истинны. Блок else выполняется, только если ни одно условие не истинно. Веток else if можно добавить сколько нужно, всегда между if и else. Завершающий else необязателен: без него, если ни одно условие не истинно, не выполняется ничего.
Раз побеждает первое истинное условие, порядок условий имеет значение:
int points = 95;
if (points >= 50) {
printf("Зачёт\n");
} else if (points >= 90) {
printf("Отлично\n");
}Программа выведет:
Зачёт95 баллов — отличный результат, но первое условие, points >= 50, уже истинно, поэтому до второго программа не доходит. Ветка, выводящая Отлично, здесь не выполнится никогда, потому что каждое число, которое не меньше 90, не меньше и 50. Ставьте первым более строгое условие: сначала points >= 90, потом points >= 50.
Задание
- 1
При 15 °C зимнее пальто не нужно. Между блоком
ifиelseдобавьте веткуelse ifс условиемtemperature > 10, которая выводитНаденьте куртку. - 2
Добавьте ещё одну ветку
else ifс условиемtemperature > 18, которая выводитНаденьте свитер, и изменитеtemperatureна20. Программа должна вывестиНаденьте свитер. Если она выводитНаденьте куртку, значит, условиеtemperature > 10стоит первым и перехватывает и 20 градусов: перенесите новую ветку выше него.