C 언어: 알 고 있 는 임의의 연도 와 달 에 그 달의 달력 을 표시 합 니 다.
12464 단어 지식 점
짐 랄 슨 의 계산 공식 에 따 르 면 알고리즘 은 다음 과 같다. w = (day + 2month + 3 (month - 1) / 5 + year + year / 4 - year / 100 + year / 400)% 7;
설명: 공식 적 인 날짜 중의 일수, month 는 날짜 중의 월 수 를 나타 낸다. year 는 날짜 중의 연 도 를 나타 낸다. 그 중에서 서기 원년 을 참고 로 서기 원년 1 월 1 일 은 월요일 이 고 1 월과 2 월 을 전년 의 13 월과 4 월 로 본다.
코드 는 다음 과 같 습 니 다:
#include
#include
//
int leapyear(int year)
{
if((year % 4 ==0 && year % 100 !=0)||year %400 == 0)
{
return 1;
}
else
{
return 0;
}
}
int main(void)
{
int year,month;
printf("input year:");
scanf("%d",&year);
printf("input month:");
scanf("%d",&month);
if(month == 1||month == 2)
{
month += 12;
year--;
}
//
int daycount = 0;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
case 13:
daycount = 31;
break;
case 4:
case 6:
case 9:
case 11:
daycount = 31;
break;
case 14:
{
if(leapyear(year))
{
daycount = 29;
}
else
{
daycount = 28;
}
break;
}
default:
break;
}
int blank = 0;
blank = (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
if(month > 12)
{
month = month -12;
year++;
}
printf("-------------------%d,%d----------------
",year,month);
printf("Mon\tTue\tWed\tThr\tFri\tSat\tSun
");
int i = 0;
for(i = 0;i<blank;i++)
{
printf("\t");
}
for(i = 1;i<=daycount;i++)
{
printf("%d\t",i);
if((i+blank)%7 == 0)
{
printf("
");
}
}
}
요약: 매달 1 일이 무슨 요일 인지 정확히 나 누 면 됩 니 다.그래서 알고리즘: w = (day + 2month + 3 (month - 1) / 5 + year + year / 4 - year / 100 + year / 400)% 7;중 day = 1.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
링크 ux 운영 실전 연습 - 2015 년 9 월 13 일 - 9 월 15 일 과정 작업5. 스 크 립 트 쓰기: 경로 가 존재 하지 않 으 면 디 렉 터 리 로 만 듭 니 다. 그렇지 않 으 면 존재 하 는 것 을 표시 하고 내용 형식 을 표시 합 니 다. 6. 스 크 립 트 를 작성 하여 다음 과 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.