|
#include /*2007-1-1 1*/ void calendar(int year , int month) { //xq用来获得输入的某年月的第一天是星期几 //yearday用来记录输入的年份离2007的1月1号的天数 //monthday用来记录输入的月份累计 int i , yearday , monthday , xq , m , x ,q; yearday = 0; monthday = 0; printf(" MON TUS WED THR FRI SAT SUN\n"); if(year >= 2007) { for(i = 2007 ; i < year ; i++) { if(i % 4 ==0 && i % 100 !=0 || i % 400 ==0) yearday +=366; else yearday +=365; } } if(year < 2007) { for(i = 2006 ; i > year ; i--) { if((i % 4 ==0 && i % 100 !=0) || (i % 400 ==0)) yearday +=366; else yearday +=365; } } if(year >= 2007) { for(i = 1 ; i <= month ; i++) { switch(i) { case 1 : m="31";break; case 2 : monthday +=31; if((year % 4 ==0 && year % 100 !=0) || (year % 400 ==0)) m = 29; else m = 28; break; case 3 : monthday += m; m = 31;break; case 4 : monthday += 31;m = 30;break; case 5 : monthday += 30;m = 31;break; case 6 : monthday += 31;m = 30;break; case 7 : monthday += 30;m = 31;break; case 8 : monthday += 31;m = 31;break; case 9 : monthday += 31;m = 30;break; case 10: monthday += 30;m = 31;break; case 11: monthday += 31;m = 30;break; case 12: monthday += 30;m = 31;break; } } } else { for(i=12 ; i>=month ;i--) { switch(i) { case 1 : monthday +=31;m=31;break; case 2 : if((year % 4 ==0 && year % 100 !=0) || (year % 400 ==0)) { m = 29; monthday += m; } else { m = 28; monthday += m; } break; case 3 : monthday += 31;m = 31;break; case 4 : monthday += 30;m = 30;break; case 5 : monthday += 31;m = 31;break; case 6 : monthday += 30;m = 30;break; case 7 : monthday += 31;m = 31;break; case 8 : monthday += 31;m = 31;break; case 9 : monthday += 30;m = 30;break; case 10: monthday += 31;m = 31;break; case 11: monthday += 30;m = 30;break; case 12: monthday += 31;m = 31;break; } } } if(year >= 2007) xq = (yearday + monthday) % 7 + 1; else { xq = 1 ; q = yearday + monthday; while(q--) { xq--; if(xq == 0) xq =7; } } if(xq == 2) printf(" "); else if(xq == 3) printf(" "); else if(xq == 4) printf(" "); else if(xq == 5) printf(" "); else if(xq == 6) printf(" "); else if(xq == 7) printf(" "); x = xq - 1; for(i = 1 ;i <= m ; i++) { printf("%6d" , i); x++; if(7 == x) { puts(""); x = 0; } } puts(""); #if 0 printf("xq = %d\n" , xq); printf("monthday = %d \n" , monthday); printf("yearday = %d \n" , yearday); #endif } int main(void) { int year , month; scanf("%d,%d", &year , &month); calendar(year , month); return 0; } 帮你写的一个,看适合不! |
|