这一题其实是和上一篇是一个系列的,由于我只找到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.youkuaiyun.com/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.youkuaiyun.com/detail/xjm199/6791447
欢迎各位指点...o(∩_∩)o