第1个回答 2014-01-03
#include <stdio.h>
#include <conio.h>
char *s[]=
{
"January","February","March","April","May","June",
"July","August","September","October","November","December"
};
int gd(int y,int m) /*求y年m月的天数*/
{
switch(m)
{
case 4:case 6:case 9:case 11:return(30);
case 2:return(!(y%4)&&(y%100)||(y%400)?29:28);
}
return(31);
}
int main()
{
int n,d1,d2,w1,w2,m1,m2,k1,k2,y,m,i;
FILE *fp;
char fname[80];
char *title="-----------------------------"; /*29个减号*/
printf("\nInput a year=");
scanf("%d",&y);
if(y<1){printf("y must be greater than zero.\n");return 0;}
printf("Input a text file name:");
scanf("%s",fname);
fp=fopen(fname,"w");
n=365*(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+1;
w1=n%7; /*w1是m月1日的星期号*/
printf("The calendar of %4d\n",y);
fprintf(fp,"The calendar of %4d\n",y);
for(m=1;m<=11;m+=2)
{
printf("%s%5c%s\n",title,32,title);
printf(" %-9s%2d %-9s%2d\n",s[m-1],m,s[m],m+1);
printf(" SUN MON TUE WED THU FRI SAT SUN MON TUE WED THU FRI SAT\n");
fprintf(fp,"%s%5c%s\n",title,32,title);
fprintf(fp," %-9s%2d %-9s%2d\n",s[m-1],m,s[m],m+1);
fprintf(fp," SUN MON TUE WED THU FRI SAT SUN MON TUE WED THU FRI SAT\n");
d1=gd(y,m);d2=gd(y,m+1);/*d1是m月的天数,d2是m+1月的天数*/
w2=(w1+d1)%7;/*/w2是m+1月1日的兴起号*/
m1=m2=1;k1=k2=0;
while(m1<=d1||m2<=d2)
{
for(i=0;i<=6;i++)
if(k1<w1||m1>d1)
{printf("%4c",32);fprintf(fp,"%4c",32);k1++;}
else
{printf("%4d",m1);fprintf(fp,"%4d",m1);m1++;}
printf("%6c",32);
fprintf(fp,"%6c",32);
for(i=0;i<=6;i++)
if(k2<w2||m2>d2)
{printf("%4c",32);fprintf(fp,"%4c",32);k2++;}
else
{printf("%4d",m2);fprintf(fp,"%4d",m2);m2++;}
printf("\n");
fprintf(fp,"\n");
}
w1=(w2+d2)%7;
}
fclose(fp);
getch();
return 0;
}本回答被网友采纳