#include <stdio.h>
int main() {
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year, month, week=0, leap=0;
int i, j, k;
printf("년 월: ");
scanf("%d%d", &year, &month);
if((year%4==0&&year%100!=0) || (year%400==0)) leap=1;
days[2]+=leap;
k=year-1;
week=(k+k/4-k/100+k/400)%7;
for(i=1;i<month;i+=1) {
week=week+days[i];
}
week=(week+1)%7;
printf("\n");
printf(" %d년 %2d월\n\n", year, month);
printf(" 일 월 화 수 목 금 토\n");
printf("---------------------\n");
for(i=0;i<week;++i) printf(" ");
while(i<days[month]+week) {
printf(" %2d", i-week+1);
i=i+1;
if(i%7==0)printf("\n");
}
return 0;
}
================================================================
#include <stdio.h>
int main() {
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char wname[7][4]={"일", "월", "화", "수", "목", "금", "토"};
int year, month, day, week=0, leap=0;
int i, j, k;
printf("연, 월, 일을 입력하세요\n");
printf("연(1950~2050)= ");
while(1) {
scanf("%d", &year);
if(1950<=year&&year<=2050) break;
printf("에러: 년도(1950~2050)재입력= ");
}
if((year%4==0&&year%100!=0) || (year%400==0)) leap=1;
days[2]+=leap;
printf("월(1~12)= ");
while(1) {
scanf("%d", &month);
if(1<=month&&month<=12) break;
printf("에러: 월(1~12)재입력= ");
}
printf("일(1~%d)= ", days[month]);
while(1) {
scanf("%d", &day);
if(1<=day&&day<=days[month]) break;
printf("에러: 일(1~%d)재입력= ", days[month]);
}
k=year-1;
// year전년도 까지의 윤년의 갯수를 구해서 year전년도에 더한 값을 week에 넣는다.
// 이렇게 하는 이유는 평년에는 1일씩 요일이 뒤로 밀리고, 윤년에는 2일씩 요일이 뒤로
// 밀리기 때문이다.
week=(k+k/4-k/100+k/400)%7;
// 이제 주어진 해의 전번달까지의 날수를 week에 더해준다.
for(i=1;i<month;i+=1) {
week=week+days[i];
}
// 그 후에 이번달의 날을 week에 더해준 것을 7로 나눈 나머지가 요일을 나타낸다.
week=(week+day)%7;
printf("%d년 %d월 %d일은 %s요일 입니다.\n",
year, month, day, wname[week]);
return 0;
}
===============================================================
#include <stdio.h>
int main() {
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year, month, week=0, leap=0;
int i, j, k;
printf("몇 년: ");
scanf("%d", &year);
if((year%4==0&&year%100!=0) || (year%400==0)) leap=1;
days[2]+=leap;
printf("1월 1일은 몇 번째 요일<일요일은 0>: ");
scanf("%d", &week);
printf("[ %d년 ]\n", year);
for(month=1;month<13;month+=1) {
printf(" << %2d월 >>\n", month);
printf("========================================================\n");
printf(" 일 월 화 수 목 금 토\n");
printf("--------------------------------------------------------\n");
for(i=0;i<week;++i) printf(" ");
while(i<days[month]+week) {
printf(" %2d ", i-week+1);
i=i+1;
if(i%7==0)printf("\n");
}
if(i%7) printf("\n");
printf("========================================================\n");
printf("\n");
week=(week+days[month])%7;
}
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
Newton-Raphson Method (0) | 2012.10.13 |
---|---|
진법변환 (0) | 2012.10.11 |
원형큐 (0) | 2012.10.08 |
c언어에서 %[^\n] 가 의미하는 것이 무엇인가요 ? (0) | 2012.10.08 |
주석 제거하기 (0) | 2012.10.02 |