반응형
C 언어를 사용하여 특정 년월의 달력을 출력하는 코드를 작성할 수 있습니다. 이를 위해 달력의 시작 요일을 계산하고, 각 날짜를 알맞게 출력해야 합니다.
우선, 2024년 7월 1일이 무슨 요일인지 알아야 합니다. 이를 계산한 후, 해당 요일로부터 날짜를 출력하는 코드를 작성합니다.
다음은 2024년 7월, 한 달의 달력을 출력하는 C 프로그램 예제입니다.
이 코드는 다음과 같이 작동합니다:
- dayOfWeek 함수는 주어진 날짜의 요일을 계산합니다. 이는 Zeller's Congruence 알고리즘을 변형하여 사용합니다.
- printCalendar 함수는 지정된 연도와 월에 대한 달력을 출력합니다.
- main 함수는 2024년 7월의 달력을 출력하기 위해 printCalendar 함수를 호출합니다.
#include <stdio.h>
// Function to determine the day of the week for a given date
int dayOfWeek(int d, int m, int y) {
static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
y -= m < 3;
return (y + y / 4 - y / 100 + y / 400 + t[m - 1] + d) % 7;
}
void printCalendar(int month, int year) {
const char* months[] = { "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" };
const int daysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int days = daysInMonth[month - 1];
// Check for leap year in case of February
if (month == 2) {
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
days = 29;
}
// Print the calendar header
printf(" %s %d\n", months[month - 1], year);
printf(" Su Mo Tu We Th Fr Sa\n");
// Get the starting day of the week
int startDay = dayOfWeek(1, month, year);
// Print initial spaces
for (int i = 0; i < startDay; i++)
printf(" ");
// Print the days of the month
for (int day = 1; day <= days; day++) {
printf("%3d", day);
if ((day + startDay) % 7 == 0)
printf("\n");
}
if ((days + startDay) % 7 != 0)
printf("\n");
}
int main() {
int month = 7;
int year = 2024;
printCalendar(month, year);
return 0;
}
main 함수 내의 년, 월을 변경해서 다른 년월의 달력을 출력할 수 있습니다.
반응형
'C_C++' 카테고리의 다른 글
C++ 클래스: 다중 상속에 관한 예제 (0) | 2024.09.28 |
---|---|
scanf 함수 반환값 (3) | 2024.08.24 |
(C언어) 달력 만들기 (1년) (0) | 2024.07.06 |
(C언어) 라이프니츠의 pi (원주율) 구하는 식 (0) | 2024.07.01 |
(C++) 이진파일을 16진수로 출력하기 (0) | 2024.06.11 |