日期
有错,未改
#include <stdio.h> #include <iostream> #include <math.h> #include <string.h> #define d 1e-7 using namespace std; char s[15]; int year=-1,month=-1,day=-1; int YEAR(int year) { if(year%400==0 || (year%4==0 && year%100!=0)) return 366; else return 365; } int MONTH(int month,int year) { if(month == 1) return 31; else if(month == 2 && YEAR(year)==366) return 29; else if(month == 2 && YEAR(year)==365) return 28; else if(month==3) return 31; else if(month==4) return 30; else if(month==5) return 31; else if(month==6) return 30; else if(month==7) return 31; else if(month==8) return 31; else if(month==9) return 30; else if(month==10) return 31; else if(month==11) return 30; else if(month==12) return 31; } int zh(int bg,int ed) { int i,x=0,t=0; for(i=ed;i>=bg;i--) { if(s[i]>='0'&&s[i]<='9') { x = x + (s[i]-'0')*pow(10,t); t++; } else return -1; } return x; } int main() { scanf("%s",s); int i,len,sum=0,flag=0; len = strlen(s); if(len == 10 && s[4]=='-' && s[7]=='-') { year = zh(0,3); month = zh(5,6); day = zh(8,9); } else if(len == 10 && s[2]=='/' && s[5]=='/') { year = zh(6,9); month = zh(0,1); day = zh(3,4); } else { printf("Error"); flag = 1; } //printf("%d %d %d",year,month,day); if(year>=0 && month>=0 && month<=12 && day >=1 &&day<=31) { if(year>=2004) { for(i=year;i>2004;i--) sum += YEAR(i); } else { for(i=year;i<2004;i++) sum -= YEAR(i+1); } sum = day-1; if(month>=3) { for(i=month;i>3;i--) sum += MONTH(i,year); } else { for(i=month;i<3;i++) sum -= MONTH(i,year); } printf("%d",sum); } else { if(flag==0) printf("Error"); } return 0; }