#include<stdio.h>
void main()
{
/*参数说明:
year-用户输入的年份;
month-用户输入的月份;
sum-所有的天数;
flag-标记该年是否是闰年,1为闰年,0为平年*/
int year,month,sum=0,flag=0;
printf("please input the year:");
scanf("%d",&year);
printf("please input the year of month:");
scanf("%d",&month);
//下面的循环是计算从公元一年到该年的上一年的所有天数
for(int i=1;i<year;i++)
{
if(i%4==0 && i%100!=0 || i%400==0)
{
flag=1;
sum=sum+366;
}
else
sum=sum+365;
}
//按照capucivar的思路,接下来要计算从该年1月到用户输入月份的上一个月的天数
for(int j=1;j<month;j++)
{
switch( j )
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum=sum+31;
break;
case 2:
if(flag=1)
sum=sum+29;
else
sum=sum+28;
break;
default:
sum=sum+30;
break;
}
}
int a=sum%7;//计算出总天数跟7求余,得到一个余数
int monthDay;//z是用户输入月份的天数
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay =31;break;
case 2:
if(flag=1)
{
monthDay =29;
}
else
{
monthDay =28;
}
break;
default:
monthDay =30;break;
}
printf("/n星期天/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六/n");
/*最后就要按照一定格式输出日历。假如上面的a计算出来是3的话,
那该月1号就是星期三,我们级必须将1放到星期三下面,而前面需要用跳格来填充。
仔细看看capucivar是如何实现的*/
for(int x=1;x<= monthDay +a;x++)
{
if(x<=a)
printf("/t");
else
printf("%d/t",x-a);
if(x%7==0)
printf("/n");
}
printf("/n");
}
c语言输出日历
最新推荐文章于 2024-03-04 14:36:01 发布