Расчёт порядкового номера дня в году - C (СИ)
Формулировка задачи:
Привет всем!
Есть задача, надо написать программу на Си для вычесления номера дня в году по дате.
Например задана дата 22.01.1991 и программа должна показать что это 22 день в 1991 году.
Также необходимо учесть Високостный год.
прошу помочь с дальнейшем решением.
П.С: если понадобится могу перевести коментарии на русский!
Зарание спасибо.
#include <stdio.h> #include <stdlib.h> int main () { int i, tag, monat, jahr; int t = 0; int arrTageImMonat[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; printf("Bitte zuerst einen Tag (1 - 31), dann einen Monat (1 - 12) und zum Schluss ein Jahr eingeben!"); printf("\nBitte Tag eingeben:"); scanf("%d", &tag); printf("\nBitte Monat eingeben:"); scanf("%d", &monat); printf("\nBitte Jahr eingeben:"); scanf("%d", &jahr); if((jahr % 400) == 0 || ((jahr % 4) == 0 && (jahr % 100) != 0)) { arrTageImMonat[2] = 29; for (i = 0; i < monat; i++) { t = t + arrTageImMonat[i]; } t = t + tag; printf("\nTag im Jahr = %d",t); } else { for (i = 0; i < monat; i++) { t = t + arrTageImMonat[i]; } t = t + tag; printf("\n Tag im Jahr = %d",t); } scanf("%d", &jahr); }
Решение задачи: «Расчёт порядкового номера дня в году»
textual
Листинг программы
if((jahr % 400) == 0 || ((jahr % 4) == 0 && (jahr % 100) != 0))
Объяснение кода листинга программы
- Переменная
jahr
содержит год, для которого нужно определить порядковый номер дня в году. - В условии используется оператор
%
для определения остатка от деления года на 400. - Если год делится на 400 без остатка, то он високосный и порядковый номер дня в году определяется как
01
. - Если год делится на 4 без остатка, но не делится на 100 без остатка, то он високосный и порядковый номер дня в году определяется как
04
. - Если год не делится ни на 4, ни на 100 без остатка, то он не високосный и порядковый номер дня в году определяется как
00
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д