/*编程序实现如下功能:输入任意一个年份,
求出从公元1年1月1日到这一年每个月的1日总共有多少天,
并求出这一年每个月的1日是星期几,
再按以下格式输出该年份全年的公历日历。
要求用循环控制打印。
打印样例如下:
9月
----------------------------
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
*/
#include
int main()
{
int year,day,leap;//leap为1表示闰年,0表示平年
int i =1,thisYear[13]={0},j=1;
printf("请输入年份:");
scanf("%d",&year);
//计算公元01年01月01日到该年份的天数
day = (year-1) * 365 + year/4-year/100+year/400;
printf("公元01年01月01日到该年是%d天\r\n",day);
printf("公元1年1月1日到这一年每个月的1日分别是:\r\n");
printf("1月\t2月\t3月\t4月\t5月\t6月\t7月\t8月\t9月\t10月\t11月\t12月\r\n");
if(year%4==0 && year%100!=0 || year%400==0)
leap=1;
else
leap=0;
thisYear[0]=day;
thisYear[1]=day+31;
thisYear[2]=day+leap+28+31;
thisYear[3]=day+leap+28+31*2;
thisYear[4]=day+leap+28+31*2+30;
thisYear[5]=day+leap+28+31*3+30;
thisYear[6]=day+leap+28+31*3+30*2;
thisYear[7]=day+leap+28+31*4+30*2;
thisYear[8]=day+leap+28+31*4+30*3;
thisYear[9]=day+leap+28+31*5+30*3;
thisYear[10]=day+leap+28+31*5+30*4;
thisYear[11]=day+leap+28+31*6+30*4;
printf("%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\t%d天\r\n",thisYear[0],thisYear[1],thisYear[2],thisYear[3],thisYear[4],
thisYear[5],thisYear[6],thisYear[7],thisYear[8],thisYear[9],thisYear[10],thisYear[11]);
//求出这一年每个月的1日是星期几:
for(i=1;i<=12;i++)
{
printf("这一年的%d月的1日是星期%d\r\n",i,thisYear[i-1]%7);
}
printf("(注:0表示星期天)\r\n");
//再按以下格式输出该年份全年的公历日历。
for(i = 1;i<=12;i++)
{
printf("%d月\r\n",i);
printf("----------------------------------------------\r\n");
printf("日\t一\t二\t三\t四\t五\t六\r\n");
switch(thisYear[i-1]%7)
{
case 0:
break;
case 1:
printf(" \t");
break;
case 2:
printf(" \t");
printf(" \t");
break;
case 3:
printf(" \t");printf(" \t");printf(" \t");
break;
case 4:
printf(" \t");printf(" \t");printf(" \t");printf(" \t");
break;
case 5:
printf(" \t");printf(" \t");printf(" \t");printf(" \t");printf(" \t");
break;
case 6:
printf(" \t");printf(" \t");printf(" \t");printf(" \t");printf(" \t");printf(" \t");
break;
}
for(j=1;j<=thisYear[i]-thisYear[i-1];j++)
{
printf("%2d\t",j);
if((j+(thisYear[i-1]))%7==0)
printf("\r\n");
}
printf("\r\n----------------------------------------------\r\n");
}
return 0;
}
这个需要给出这年的第一天是星期几吧?要自己算太麻烦了
c语言 日期问题 我可以写