Problem Y: 哪一天,哪一秒?
阿新 • • 發佈:2018-03-20
enter input ret sharp nth += highlight day rip
Submit: 337 Solved: 196
[Submit][Status][Web Board]
Problem Y: 哪一天,哪一秒?
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 337 Solved: 196
[Submit][Status][Web Board]
Description
小王特愛數字。期末復習各門功課燒腦厲害,他想換換腦筋,就想算算數。他想任意給出一個時間(年月日時分秒),得出是一年當中的第幾天,還有,這是一年中的第幾秒。
下面的程序,定義了一個結構體以及部分程序,可以對n個時間做如上的操作,請按給出程序限制的形式,定義出其他必須的函數並提交。
Input
整數n,代表處理幾個日期值
n行日期值,每行的整數分別代表年、月、日、時、分、秒,測試數據保證都是合法時間取值,即不會出類似2月30號的輸入
Output
n行輸出,每行對應給出的時間是當年第幾天,以及是當年第幾秒
Sample Input
3
1971 1 8 14 25 48
2011 2 27 1 27 35
2012 11 2 11 23 1
Sample Output
8 743148
58 5016455
307 26565781
#include <stdio.h> struct Time { int year; int month; int day; int hour; int minute; int second; }; void getTime(struct Time *pt); int dayOfYear(struct Time t); long secondOfyear(struct Time *pt); int main() { struct Time t; int i,n; scanf("%d",&n); for(i=0;i<n;i++) { getTime(&t); printf("%d %ld\n",dayOfYear(t),secondOfyear(&t)); } return 0; } int dayOfYear(struct Time t) { int i; int r=0; r=t.day; if((t.year%4==0&&t.year%100!=0)||(t.year%400==0)&&(t.month>=2)) { r=r+1; } for(i=1;i<=t.month;i++) { if(i==2) r+=31; if(i==3) r+=28; if(i==4) r+=31; if(i==5) r+=30; if(i==6) r+=31; if(i==7) r+=30; if(i==8) r+=31; if(i==9) r+=31; if(i==10) r+=30; if(i==11) r+=31; if(i==12) r+=30; } return r; } long secondOfyear(struct Time *pt) { int n; n=dayOfYear(*pt)*3600*24+(*pt).hour*3600+(*pt).minute*60+(*pt).second; return n; } void getTime(struct Time *pt) { scanf("%d%d%d%d%d%d", &pt->year, &pt->month, &pt->day, &pt->hour, &pt->minute, &pt->second); return; }
Problem Y: 哪一天,哪一秒?