/*以下程序在TC2 中通过*/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
void rili(int,int);
int runniansub(int);
int week(int,int,int);
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
struct date d;
getdate(&d);
printf("今天是:%d年 %d月 %d日\n",d.da_year,d.da_mon,d.da_day);
rili(d.da_year,d.da_mon-1);
system("pause");
return 0;
}
void rili(int year,int month)
{
int d,w,i,s,c,p;
char x;
while(month>11) {
month-=12;
year++;
}
while(month<0) {
year--;
month+=12;
}
if(runniansub(year)) monthday[1]=29;
printf("%d年%d月\n",year,month+1);
printf("S M T W T F S\n");
s=week(year,month+1,1);
for(i=0; i<3*s; i++ ) printf(" ");
c=s;
for(d=1;d<=monthday[month];d++) {
if(c>6) {
printf("\n");
c=0;
}
c++;
printf("%d",d);
printf("%s",(d<10)?" ":" ");
}
printf("\n");
printf("下月N,上月P,退出Q");
x=getch();
printf("%c\n",x);
if(x=='N' || x=='n') { rili(year,month+1); }
else if(x=='P' || x=='p') { rili(year,month-1); }
else { printf("感谢使用!88\n"); return;}
}
int runniansub(int year)
{
return ((year%4==0 && year%100!=0) || (year%4==0 && year%400==0));
}
int week(int y,int m,int d)
{
if((m==1)||(m==2)) {
m+=12;
y--;
}
return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)+1)%7;
}
温馨提示:答案为网友推荐,仅供参考