设计一个万年历c语言

设计一个万年历c语言显示和查询功能都要有

第1个回答  2017-03-01
#include<stdio.h>
int getDays(int year,int month,int day);
int isLeapYear(int year);
int getMonthDays(int year,int month);
void main()
{
int year,month,day;
int i,days=0,weekday,monthdays;
int calendar[42]={0};
char *p[7]={"SUN","MON","TUE","WES","THU","FRI","SAT"};
scanf("%d-%d-%d",&year,&month,&day);
for(i=1980;i<year;i++)
{
if(isLeapYear(i))
days+=366;
else days+=365;
}
days+=getDays(year,month,1);
weekday=(days+1)%7;
//printf("%d",weekday);
monthdays=getMonthDays(year,month);
for(i=0;i<monthdays;i++)
{
calendar[weekday+i]=i+1;
}
for(i=0;i<7;i++)
{
printf("%s ",p[i]);
}
printf("\n");
for(i=0;i<42;i++)
{
if(calendar[i]!=0)
{
if(calendar[i]==day)
printf("[%d]",day);
else printf("%3d ",calendar[i]);
}
else printf(" ");
if((i+1)%7==0)
printf("\n");
}
}
int getMonthDays(int year,int month)
{
int days;
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;
case 4:case 6:case 9:case 11:days=30;break;
case 2:if(isLeapYear(year))days=29;
else days=28;
}
return days;
}
int getDays(int year,int month,int day)
{
int days=0;
switch(month)
{
case 12:days+=30;
case 11:days+=31;
case 10:days+=30;
case 9 :days+=31;
case 8 :days+=31;
case 7 :days+=30;
case 6 :days+=31;
case 5 :days+=30;
case 4 :days+=31;
case 3 :if(isLeapYear(year))days+=29;
else days+=28;
case 2 :days+=31;
}
days+=day;
return days;
}
int isLeapYear(int year)
{
if((year%400==0)||((year%4==0)&&(year%100!=0)))
{
return 1;
}
else
{
return 0;
}
}本回答被网友采纳
相似回答