要求:输入年份和月份,打印出日历
代码:
#include<stdio.h> int f(int m,int n) { int i,j,k,s=0,t; for(i=1;i<=m-1;i++) if(i%400==0||(i%4==0&&i%100!=0)) s++; int sum=366*s+(m-1-s)*365; if(m%400==0||m%4==0&&m%100!=0) { int su=0; for(i=1;i<=n-1;i++) { if(i==2)su=su+29; else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) su=su+31; else su=su+30; } return (sum+su+1)%7; } else { int su=0; for(i=1;i<=n-1;i++) { if(i==2)su=su+28; else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) su=su+31; else su=su+30; } return (sum+su+1)%7; } } int main() { int m,n; while(printf("请输入年份和月份(中间用空格隔开): ")&&scanf("%d%d",&m,&n)!=EOF) { int i,j,k,s,t; printf("%12d年日历 ---------- ---------- %12d月 ",m,n); printf("日 一 二 三 四 五 六 "); printf("-------------------------- "); if(m%400==0||m%4==0&&m%100!=0) { t=f(m,n); int ts=t; if(n==1||n==3||n==7||n==8||n==10||n==12) { for(i=1;i<=t;i++) { for(j=1;j<=4;j++) printf(" "); } for(i=1;i<=31;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } else if(n==2) { for(i=1;i<=t;i++) { for(j=1;j<=4;j++) printf(" "); } for(i=1;i<=29;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } else { for(i=1;i<=t;i++) for(j=1;j<=4;j++) printf(" "); for(i=1;i<=30;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } } else { t=f(m,n); int ts=t; if(n==1||n==3||n==7||n==8||n==10||n==12) { for(i=1;i<=t;i++) { for(j=1;j<=4;j++) printf(" "); } for(i=1;i<=31;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } else if(n==2) { for(i=1;i<=t;i++) { for(j=1;j<=4;j++) printf(" "); } for(i=1;i<=28;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } else { for(i=1;i<=t;i++) for(j=1;j<=4;j++) printf(" "); for(i=1;i<=30;i++) { printf("%-4d",i); ts++; if(ts%7==0) printf(" "); } if(ts%7==0) printf("-------------------------- "); else printf(" -------------------------- "); } } } }