Определить високосный год или нет

Задача

Определить, является ли год, который ввел пользователем, високосным или невисокосным.

Пояснение к задаче и алгоритм решения

Високосные года делятся нацело на 4. Однако из этого правила есть исключение: столетия, которые не делятся нацело на 400, високосными не являются.

В високосном годе 366 дней, в обычном 365.

  1. Если год не делится на 4, значит он обычный.
  2. Иначе надо проверить не делится ли год на 100.
  3. Если не делится, значит это не столетие и можно сделать вывод, что год високосный.
  4. Если делится на 100, значит это столетие и его следует проверить его делимость на 400.
  5. Если год делится на 400, то он високосный.
  6. Иначе год обычный.

Проверки можно проводить последовательно, а можно группировать через логические операторы "И" и "ИЛИ". Поэтому способов решения задачи может быть несколько.

Исходный код на языке программирования Pascal

// 1-й вариант:

var y: word;
begin
    readln(y);
    if y mod 4 <> 0 then writeln('Обычный')
    else
        if y mod 100 = 0 then
            if y mod 400 = 0 then writeln('Високосный')
            else writeln('Обычный')
        else writeln('Високосный');
end.

// 2-й вариант:

var y: word;
begin
    readln(y);
    if (y mod 4 <> 0) or (y mod 100 = 0) and (y mod 400 <> 0) then
        writeln('Обычный')
    else
        writeln('Високосный');
end.

Пример(ы) выполнения программы на языке Pascal

1980
Високосный

1978
Обычный

Исходный код на языке программирования C

// 1-й вариант:

#include <stdio.h>
 
main() {
    int y;
    scanf("%d",&y);
    if (y%4 != 0) printf("Обычный");
    else
        if (y%100 == 0 && y%400 != 0) printf("Обычный");
        else printf("Високосный");
    printf("\n");
}

// 2-й вариант:

#include <stdio.h>
 
main() {
    int y;
    scanf("%d",&y);
    if (y%4 != 0 || y%100 == 0 && y%400 != 0) printf("Обычный");
    else printf("Високосный");
    printf("\n");
}

Исходный код на языке программирования Python

# 1-й вариант:

y = int(input())
if y % 4 != 0:
    print("Обычный")
elif y % 100 == 0:
    if y % 400 == 0:
        print("Високосный")
    else:
        print("Обычный")
else:
    print("Високосный")

# 2-й вариант:

if y % 4 != 0 or (y % 100 == 0 and y % 400 != 0):
    print("Обычный")
else:
    print("Високосный")

Исходный код на языке программирования КуМир

| 1-й вариант:

алг високосный год
нач
  цел n
  ввод n
  если mod(n,4) <> 0 то
    вывод "Обычный год"
   иначе
    если mod(n,100) = 0 то
      если mod(n,400) = 0 то
        вывод "Високосный год"
       иначе
        вывод "Обычный год"
      все
     иначе
      вывод "Високосный год"
    все
  все
кон

| 2-й вариант:

алг високосный год
нач
  цел n
  ввод n
  если mod(n,4) <> 0 или mod(n,100) = 0 и mod(n,400) <> 0 то
    вывод "Обычный год"
   иначе
    вывод "Високосный год"
  все
кон

Пример(ы) выполнения программы на языке КуМир

1100
Обычный год

1992
Високосный год

Исходный код на языке программирования Basic

input y
if y%4 = 0 then
        if y%100=0 and y%400 <> 0 then
                print "365"
        else
                print "366"
        endif
else
        print "365"
endif

Тема

Ветвления

Уровень сложности

Средний

Дата публикации