编写程序:假定2000年1月1日是Sunday(星期天),计算某年的每月1日是星期几,统计这12个日子里的星期日到星期六各有几天,把统计结果以如下格式写入磁盘的文本文件data.dat中。输入:一个大于2000的整数表示年;输出:data.dat文件。
#include<stdio.h>
day(int *a,int *b,int *c,int *d,int *e,int *f,int *g,int *h)
{
int m;
m=*a%7;
switch(m)
{
case 1:++*b;break;
case 2:++*c;break;
case 3:++*d;break;
case 4:++*e;break;
case 5:++*f;break;
case 6:++*g;break;
case 0:++*h;break;
}
}
int main()
{
int year,result,days=0,first=7,i=0;
int cha=2000;
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;
scanf("%d",&year);
while(cha<year)
{
if(cha%4==0&&cha%100!=0||cha%400==0)
{
cha++;
days+=366;
}
else
{
cha++;
days+=365;
}
}
switch(days%7)
{
case 1:first=7;break;
case 2:first=1;break;
case 3:first=2;break;
case 4:first=3;break;
case 5:first=4;break;
case 6:first=5;break;
case 7:first=6;break;
}
if(year%4==0&&year%100!=0||year%400==0)
{
int b[12]={first,first+3,first+4,first,first+2,first+5,first,first+3,first+6,first+1,first+4,first+6};
for(i=0;i<12;i++)
day(b+i,&a1,&a2,&a3,&a4,&a5,&a6,&a7);
}
else
{
int a[12]={first,first+3,first+3,first+6,first+1,first+4,first+6,first+2,first+5,first,first+3,first+5};
for(i=0;i<12;i++)
day(a+i,&a1,&a2,&a3,&a4,&a5,&a6,&a7);
}
printf("Sunday %d\nMonday %d\nTuesday %d\nWednesday %d\nThursday %d\nFriday %d\nSaturday %d\n",a7,a1,a2,a3,a4,a5,a6);
}