#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> int a[31]={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,31}; int main() { int Leap(int ); int Month(int ); void print(int k,int t,int day); int i,j=0,k,m,n,t=-6; int day; int total=1; printf("请输入年份:"); scanf("%d",&m); printf("请输入月份:"); scanf("%d",&n); getchar(); do { system("cls"); printf("%d年%d月:\n",m,n); total=365*(m-1); for(i=1;i<m;i++) if(Leap(i)==1) total+=1; for(i=1;i<n;i++) total=total+Month(i); day=Month(n); if(Leap(m)==1 && n==2) day++; if(total>1) total--; if(total==0) k=(total+1)%7; else k=(total+2)%7; print(k,t,day); printf("请选择:"); switch(getch()) { case '>': if(n==12) { m++; n=1; } else n++; break; case '<': if(n==1) { m--; n=12; } else n--; break; case '?': printf("请输入年份:"); scanf("%d",&m); printf("请输入月份:"); scanf("%d",&n); break; case '#': j=1; break; } if(j==1) break; putchar(10); }while(1); return 0; } int Month(int n) { int day; switch(n) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 2: day=28; break; case 4: case 6: case 9: case 11: day=30; break; default: printf("您输入的月份有错, 请重新输入!\n"); } return day; } int Leap(int m) {//闰年返回1,否则返回0。 int i=0; if(m%4==0 && m%100!=0 || m%400==0) i=1; return i; } void print(int k,int t,int day) { FILE *fp; if((fp=fopen("abc.txt","w"))==0) { printf("打开失败\n"); exit(1); } int i; printf("\n日 一 二 三 四 五 六\n"); fprintf(fp,"\n日 一 二 三 四 五 六\n"); printf("-------------------------------------------------------------\n"); fprintf(fp,"---------------------------------------------------------\n"); for(i=1;i<=k;i++) { printf(" "); fprintf(fp," "); } for(i=0;i<day;i++) { printf("%-8d",a[i]); fprintf(fp,"%-8d",a[i]); if(k==6) { printf("\n"); printf("-------------------------------------------------------------\n"); fprintf(fp,"\n"); fprintf(fp,"-----------------------------------------------------------\n"); t=0; } if(t!=0 && t%7==0) { printf("\n"); fprintf(fp,"\n"); printf("-------------------------------------------------------------\n"); fprintf(fp,"-----------------------------------------------------------\n"); } k++; t++; } printf("\n--------------------------\n"); printf(" 选 项 \n"); printf(" > 下一个月 \n"); printf(" < 上一个月 \n"); printf(" ? 自定义年月 \n"); printf(" # 退出 \n"); printf("--------------------------\n"); fclose(fp); }