C_C++

(C언어) 1년 1월 1일부터 특정 날짜까지의 총 날수 계산하기

고니자니 2022. 11. 1. 21:23
반응형

서기 1년 1월 1일부터 입력 받는 날짜(년 월 일)까지의 총 날짜 수를 계산하는 C언어 코드입니다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int totalday(int year, int month, int day);

int main(void) {
	int year, month, day, total;
	printf("년월일 입력(yyyy mm dd): ");
	scanf("%d %d %d", &year, &month, &day);
	total = totalday(year, month, day);
	printf("총 날짜: %d\n\n", total);

	return 0;
}

int isLeapYear(int year)
{
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		return 1; // 윤년
	else
		return 0; // 평년
}

int totalday(int year, int month, int day)
{
	int months[] = { 31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int i, sum = 0;


	for (i = 1; i < year; i++)	// 이전 년도까지의 총 날 수
		sum += (365 + isLeapYear(i));

	for (i = 0; i < month - 1; i++)	// 현재 년도의 바로 앞 달까지의 총 일수
		sum += months[i];

	if (month > 2)	// 현재 년도, 3월 이상이면 2월이 윤년이면 1을 더함
		sum += isLeapYear(year);

	sum += day;	// 일자를 더함

	return sum;
}

(Output)

반응형