这一题其实是和上一篇是一个系列的,由于我只找到1900年1月1日星期一,暂且先判断这以后的日期吧;(一周的第一天是星期天,即周日)
上一篇是用来得到两个日期的天数的,那这一道就窃取上一道的劳动成果了;
通过得到目的日期与1900-1-1相差日期,对7取余,判断即可:
case 0: //今天是星期一... printf("Today是一周的第2天\n"); break; case 1: //今天是星期二...以此类推 printf("Today是一周的第3天\n"); break; case 2: printf("Today是一周的第4天\n"); break; case 3: printf("Today是一周的第5天\n"); break; case 4: printf("Today是一周的第6天\n"); break; case 5: printf("Today是一周的第7天\n"); break; case 6: printf("Today是一周的第1天\n"); break; default: break;
因为1900-1-1是星期一,所以起点也是星期一,一个星期的第二天;
下面贴出代码,之前英雄会做多了...所以main中的数据录入我也没做,感兴趣的自己定义变量,录入数据即可;
/********** * 2013-12-31 * _Luffy * http://blog.csdn.net/xjm199 ***********/ #include <stdio.h> int isleapyear(int year) //是否是闰年 { return ((year % 4 == 0 && year % 100 != 0)|| year % 400 == 0); } int sum(int year, int month, int day) { int mon[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int sum = (year - 1) * 365; //自公元1年来的天数 int i; sum += (year - 1) / 4 + 1; //能被4整除的都加上 sum -= (year - 1) / 100 + 1; //其中被100整除的不是闰年 sum += (year - 1) / 400 + 1; //实际上能被400整除的即为闰年 for(i = 0; i < month - 1; ++i) //将本年的剩下日期加上 sum += mon[i]; if(isleapyear(year) == 1 && month > 2) //本年是否闰2月 ++sum; sum += day; //本月的日子加上 return sum; } int main() { //一周的第一天是周日,1900年1月1日星期一 int days = sum(2013, 12, 31) - sum(1900, 1, 1); //自1900年1月1日后的天数 days = days % 7; switch(days) { case 0: //今天是星期一... printf("Today是一周的第2天\n"); break; case 1: //今天是星期二...以此类推 printf("Today是一周的第3天\n"); break; case 2: printf("Today是一周的第4天\n"); break; case 3: printf("Today是一周的第5天\n"); break; case 4: printf("Today是一周的第6天\n"); break; case 5: printf("Today是一周的第7天\n"); break; case 6: printf("Today是一周的第1天\n"); break; default: break; } return 0; }
Today是一周的第3天 Process returned 0 (0x0) execution time : 0.166 s Press any key to continue.
在2013即将消逝之际,祝各位顺顺利利...
小工程可见:http://download.csdn.net/detail/xjm199/6791447
欢迎各位指点...o(∩_∩)o