标签:
来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
注意: 总时间限制: 1000ms 内存限制: 65536kB
甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。
读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600-01-01,也不晚于2999-12-30。
输入仅一行,格式为yyyy-mm-dd的日期。
输出也仅一行,格式为yyyy-mm-dd的日期
2010-07-05
2010-07-06
闰年的标准:
(1)普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
地球公转示意图
(2)世纪年能被400整除的是闰年。(如2000年是闰年,1100年不是闰年)
输入语句scanf("%d-%d-%d",&y,&m,&d)可以存储年,月,日.输出语句格式类似printf("%d-%02d-%02d\n",year,month,day).
1 #include<iostream> 2 #include<stdio.h> 3 int isLeapYear(int year); 4 int main() 5 { 6 int y,m,d; 7 int year,month,day; 8 int monthCarrySave=0; 9 int yearCarrySave=0; 10 scanf("%d-%d-%d",&y,&m,&d); 11 if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){ 12 if(d==31){ 13 day=1; 14 monthCarrySave=1; 15 } 16 else day=d+1; 17 } 18 else { 19 if(m==2){ 20 if(d==28){ 21 if(isLeapYear(y)){ 22 day=1; 23 monthCarrySave=1; 24 } 25 else{ 26 day=d+1; 27 } 28 } 29 else if(d==29){ 30 day=1; 31 monthCarrySave=1; 32 } 33 else{ 34 day=d+1; 35 } 36 } 37 else{ 38 if(d==30){ 39 day=1; 40 monthCarrySave=1; 41 } 42 else { 43 day=d+1; 44 } 45 } 46 } 47 month=m+monthCarrySave; 48 if(month>12){ 49 month=1; 50 yearCarrySave=1; 51 } 52 year=y+yearCarrySave; 53 printf("%d-%02d-%02d\n",year,month,day); 54 return 0; 55 } 56 int isLeapYear(int year) 57 { 58 if(year%4==0&&year%100!=0||year%400==0) 59 return 1; 60 else return 0; 61 }
POJ C程序设计进阶 编程题#4:Tomorrow never knows?
标签:
原文地址:http://www.cnblogs.com/dagon/p/4706121.html