日期计算-ACM

来源:互联网 发布:网络词蜜汁什么意思 编辑:程序博客网 时间:2024/06/11 21:01

日期计算


描述
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。
输出
每组输入数据的输出占一行,输出判断出的天数n
样例输入
32000 4 52001 5 42010 10 24
样例输出
96124297

来源


*******************************************************************************************************


我的代码:

#include "iostream"using namespace std;int calcMonth(int month,int flag);int main(){int N,A,B,C,D;int flag=0;cin>>N;while(N--){cin>>A>>B>>C;if ((A%4==0&&A%100!=0) || (A%400==0))flag=1;elseflag=0;D=calcMonth(B,flag)+C;cout<<D<<endl;}return 0;}int calcMonth(int month,int flag){int M;if (flag==1){switch(month){case 1:M=0;break;case 2:M=31;break;case 3:M=60;break;case 4:M=91;break;case 5:M=121;break;case 6:M=152;break;case 7:M=182;break;case 8:M=213;break;case 9:M=244;break;case 10:M=274;break;case 11:M=305;break;case 12:M=335;break;}}else if (flag==0){switch(month){case 1:M=0;break;case 2:M=31;break;case 3:M=59;break;case 4:M=90;break;case 5:M=120;break;case 6:M=151;break;case 7:M=181;break;case 8:M=212;break;case 9:M=243;break;case 10:M=273;break;case 11:M=304;break;case 12:M=334;break;}}return M;}


在网上还看这样一段代码,觉得这个比较好~~

#include<stdio.h>#include<stdlib.h>int years[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};void Caculate_Days(int year,int month,int day){int i,leap=0;if((year%4==0 && year%100!=0) || (year%100==0 && year%400==0) )leap=1;for(i=0;i<month;i++)day+=years[leap][i];printf("%d\n",day);}int main(){int year,month,day,m;scanf("%d\n",&m);while(m--){scanf("%d%d%d",&year,&month,&day);Caculate_Days(year,month,day);}return 0;}


0 0
原创粉丝点击