代码练习系列:问题 B Day of Week
2017-11-08 10:53
316 查看
题目描述
We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.
For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap.
Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s agreement about dating.
输入
There is one single line contains the day number d, month name M and year number y(1000≤y≤3000). The month name is the corresponding English name starting from the capital letter.
输出
Output a single line with the English name of the day of week corresponding to the date, starting from the capital letter. All other letters must be in lower case.
样例输入
21 December 2012
5 January 2013
样例输出
Friday
Saturday
We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.
For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap.
Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s agreement about dating.
输入
There is one single line contains the day number d, month name M and year number y(1000≤y≤3000). The month name is the corresponding English name starting from the capital letter.
输出
Output a single line with the English name of the day of week corresponding to the date, starting from the capital letter. All other letters must be in lower case.
样例输入
21 December 2012
5 January 2013
样例输出
Friday
Saturday
#include <stdio.h> #include <string.h> #define isleap(x) (x % 100 != 0 && x % 4 == 0)|| x % 400 == 0 ? 1 : 0 int dayofMonth[13][2] = {{0,0},{31,31},{28,29},{31,31},{30,30}, {31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}}; char dayofWeek[7][20] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; char monthofYear[13][20] = {"","January","February","March","April","May", "June","July","August","September","October","November","December"}; int cordOfDate(int year1,int month1,int day1){ int year2 = 2017; int month2 = 11; int day2 = 8; int tempY,tempM,tempD; int cnt = 0; int num1 = year1*10000 + month1*100 + day1; int num2 = year2*10000 + month2*100 + day2; if(num1 > num2){ tempY = year1; tempM = month1; tempD = day1; year1 = year2; month1 = month2; day1 = day2; year2 = tempY; month2 = tempM; day2 = tempD; } while(year1 < year2 || month1 < month2 || day1 < day2){ day1++; if(day1 == dayofMonth[month1][isleap(year1)] + 1){ month1++; day1 = 1; } if(month1 == 13){ year1++; month1 = 1; } cnt++; } return cnt; } int main() { int day,year; char month[20]; int num,n; while(scanf("%d %s %d",&day,month,&year) != EOF){ for(int i = 0;i < 14;i++){ if(strcmp(month,monthofYear[i]) == 0){ num = i; break; } } printf("%d\n",num); n = cordOfDate(year,num,day); printf("%d\n",n); puts(dayofWeek[(n+2) % 7]); } return 0; }
相关文章推荐
- 代码练习系列:问题 B 数制转换
- 代码练习系列:问题 A 日期差值
- 代码练习系列:问题 A 又一版 A+B
- 代码练习系列:问题 H 部分A+B (15)
- 代码练习系列:问题 A 统计同成绩学生人数
- 代码练习系列:问题 C 等腰梯形
- 代码练习系列:问题 A 字符串连接
- 代码练习系列:问题 C 打印日期
- 代码练习系列:问题 F A+B和C (15)
- 代码练习系列:问题 E 学生查询
- 代码练习系列:问题 B Hello World for U
- 代码练习系列:问题 A 输出梯形
- 代码练习系列:问题 C 进制转换【转载】
- 代码练习系列:问题 G 数字分类 (20)
- 代码练习系列:问题 E 日期累加
- 代码练习系列:问题 D 八进制
- WebPack系列:Webpack编译的代码如何在tomcat中使用时静态资源路径不对的问题如何解决
- 数学建模常用Matlab/Lingo/c代码总结系列——最小费用最大流问题
- 数学建模常用Matlab/Lingo/c代码总结系列——整数规划问题
- 代码练习系列:特殊乘法