标签:&& 12 闰年 淼姐 31 29 2006 数组 生日
淼姐有时候会很糊涂,她常常不知道自己的生日是星期几?请你帮她编写一个程序,只要输入年月日,就能知道那天是星期几。
Input
输入一个日期,包括年、月、日。
Output
输出这个日期是星期几。
Sample Input
1 1 1
2 1 1
2006 7 10
Sample Output
Monday
Tuesday
Monday
Hint
1、 已知公元1 年1 月1 日是星期一 2、 算法提示:如果输入的是2006 年3 月12 日,计算方法是 (1) 先计算从公元0001 年初(0001-1-1)到2005 年末(2005-12-31)共多少天,注意其中有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足: (( year%40 && year%100!=0 )||(year%4000)) (2) 然后再计算2006 年1 月1 日到2006-3-12 是多少天。注意同样判断本年度是否闰年, 即二月份是28 天还是29 天。 (3) 上述两部分相加即从公元0001 年初(0001-1-1)到2006 年末(2006-3-12)的天数, 用该天数模7(total%7)即得到星期数。
(忽略罗马教皇事件,若不懂此事件,不用管此括号内提示!)
#include "stdio.h"
int main()
{
int y, m, d;
int n = 0, i; //一共有n天
int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char b[7][100] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thurday", "Friday", "Saturday"};
scanf("%d%d%d", &y, &m, &d);
for(i = 1; i <= y; i++)
{
if((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
n++;//判断闰年的个数只要是闰年都会加1,但是没有判断是否过2月29号
}
if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
{
if(m > 2)
;
else if(m == 2 && d == 29)
;
else
n--;
}//判断是否过2月29号
n = 365 * (y - 1) + n + d; //计算除月份的日子数
for(i = 1; i < m; i++)
{
n += a[i - 1];
}
n = n % 7;
printf("%s", b[n]);
}
标签:&&,12,闰年,淼姐,31,29,2006,数组,生日 来源: https://blog.csdn.net/ichizy/article/details/110943280
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。