반응형
달력을 C언어로 출력하는 프로그램을 작성하는 방법을 설명하겠습니다. 이 프로그램은 윤년을 고려하여 2024년의 각 달의 날짜를 정확하게 출력합니다.
먼저 2024년의 각 달이 몇 일인지 정의하고, 각 달의 시작 요일을 계산한 다음, 달력을 출력하는 방법을 구현합니다.
이 코드는 다음과 같은 주요 부분으로 구성됩니다:
- isLeapYear: 주어진 연도가 윤년인지 판단합니다.
- getDaysInMonth: 주어진 연도와 달에 해당하는 날짜 수를 반환합니다.
- getStartDayOfMonth: 주어진 연도와 달에 해당하는 첫 번째 날짜의 요일을 계산합니다.
- printCalendar: 주어진 연도와 달에 대한 달력을 콘솔에 출력합니다.
- main: 2024년의 각 달을 출력하는 메인 함수입니다.
이 코드를 실행하면 2024년의 각 달의 달력을 콘솔에 출력할 수 있습니다.
#include <stdio.h>
// 윤년 여부를 판단하는 함수
int isLeapYear(int year) {
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
return 1;
else
return 0;
}
// 각 달의 일 수를 반환하는 함수
int getDaysInMonth(int year, int month) {
int daysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (month == 2 && isLeapYear(year))
return 29;
else
return daysInMonth[month - 1];
}
// 달의 시작 요일을 반환하는 함수
int getStartDayOfMonth(int year, int month) {
int day = 1, y, m;
static int dayOfWeek[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
year -= month < 3;
return (year + year / 4 - year / 100 + year / 400 + dayOfWeek[month - 1] + day) % 7;
}
// 특정 달의 달력을 출력하는 함수
void printCalendar(int year, int month) {
char* monthName[] = { " 1월", " 2월", " 3월", " 4월", " 5월", " 6월",
" 7월", " 8월", " 9월", "10월", "11월", "12월" };
int days = getDaysInMonth(year, month);
int startDay = getStartDayOfMonth(year, month);
printf("\n\t%s\n", monthName[month - 1]);
printf("일 월 화 수 목 금 토\n");
for (int i = 0; i < startDay; i++) {
printf(" ");
}
for (int day = 1; day <= days; day++) {
printf("%2d ", day);
if ((day + startDay) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
int main() {
int year = 2024;
for (int month = 1; month <= 12; month++) {
printCalendar(year, month);
}
return 0;
}
파이썬 달력 만들기
반응형
'C_C++' 카테고리의 다른 글
scanf 함수 반환값 (3) | 2024.08.24 |
---|---|
(C언어) 달력 만들기(한 달) (1) | 2024.07.07 |
(C언어) 라이프니츠의 pi (원주율) 구하는 식 (0) | 2024.07.01 |
(C++) 이진파일을 16진수로 출력하기 (0) | 2024.06.11 |
(C++) 구조체를 이용해서 데이터 파일 읽기: fstream (0) | 2024.06.10 |