给定起始时间为2000年1月1日,输入数字n,n为多少天后。输出那一天的日期和星期. #include "stdio.h" int h[12]={31,28,31,30,31,30,31,31,30,31,30,31}; char s[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"}; inline int r(int y) { if((y%4==0&&y%100!=0)||y%400==0) return 366; else return 365; } int main() { int y,d,x; int i; while(scanf("%d",&d)&&d!=-1) { x=d%7; d++; int m=d/146097;//这里是做了个优化,146097天相当于400年 d-=m*146097; y=2000+m*400; for(;d>r(y);y++) { d-=r(y); } if(r(y)==366) h[1]=29;else h[1]=28; i=0; while(d>h[i]) { d-=h[i];i++; } printf("%d-%02d-%02d %s/n",y,i+1,d,s[x]); } return 0; } 是个ACM题目,不过我是在编一个程序的时候用到,就刚好发出来了