万年历C语言代码.doc
《万年历C语言代码.doc》由会员分享,可在线阅读,更多相关《万年历C语言代码.doc(3页珍藏版)》请在冰豆网上搜索。
![万年历C语言代码.doc](https://file1.bdocx.com/fileroot1/2022-10/19/b970017d-4321-40c2-939e-d497aff22992/b970017d-4321-40c2-939e-d497aff229921.gif)
万年历C语言代码
#include
main()
{
for(;;)
{
intyear,month,a,b,c,m,n=28;/*定义变量*/
longe;
printf("请输入年份");
scanf("%d",&year);
e=year;
e--;/*前一年*/
e=(e*365+e/4)%7;/*计算这一年的第一天是星期几*/
m=e;/*把第一天的日期赋给m*/
if((year%4==0)||(year%100!
=0)&&(year%400!
=0))/*如果是闰年*/
n++;
printf("%d的日历:
",year);
for(month=1;month<=12;month++)
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)/*这几个月每个月都是31天*/
{
c=0;
printf("\n");
printf("%d月\n",month);
printf("日一二三四五六\n");
for(b=1;b<=m;b++)
{
c++;
printf("");/*从星期日开始到这个月开始的那天前都是空的*/
}
for(a=1;a<=31;a++)
{
c++;
if(c%7-1==0&&c!
=1)/*判断一行是否已排满,满了就要换行*/
printf("\n");
if(a<10)/*如果是小于10,空一格,大于10,前后空*/
printf("");
printf("%d",a);
m++;
if(m==7)/*一行排满,开始换行。
(指的是这个月的最后一行)*/
m=0;
}
printf("\n");
}
else
{
if(month==4||month==6||month==9||month==11||month==2)
{
if(month==2)/*判断2月份*/
{
c=0;
printf("\n");
printf("%d月\n",month);
printf("");
printf("日一二三四五六\n");
for(b=1;b<=m;b++)
{
c++;
printf("");
}
for(a=1;a<=n;a++)
{
c++;
if(c%7-1==0&&c!
=1)
printf("\n");
if(a<10)
printf("");
printf("%d",a);
m++;
if(m==7)
m=0;
}
printf("\n");
}
else
{
c=0;
printf("\n");
printf("%d月\n",month);
printf("日一二三四五六\n");
for(b=1;b<=m;b++)
{
c++;
printf("");
}
for(a=1;a<=30;a++)
{
c++;
if(c%7-1==0&&c!
=1)
printf("\n");
if(a<10)
printf("");
printf("%d",a);
m++;
if(m==7)
m=0;
}
printf("\n");}
}
}
}
}
}