C++实现:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int y,m,d,count=0;
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF){
if((y%4==0&&y%100!=0)||y%400==0) //如果是闰年
{
if(m<=2){
count=(m-1)*31+d;
}
if(m==3){
count=29+31+d;
}
if(m==4){
count=29+31+30+d;
}
if(m==5){
count=29+31*2+30+d;
}
if(m==6){
count=29+31*2+30+31+d;
}
if(m==7){
count=29+31*2+30+31+30+d;
}
if(m==8){
count=29+31*2+30+31+30+31+d;
}
if(m==9){
count=29+31*2+30+31+30+31+31+d;
}
if(m==10){
count=29+31*2+30+31+30+31+31+30+d;
}
if(m==11){
count=29+31*2+30+31+30+31+31+30+31+d;
}
if(m==12){
count=29+31*2+30+31+30+31+31+30+31+30+d;
}
}
else{ //如果是平年
if(m<=2){
count=(m-1)*31+d;
}
if(m==3){
count=28+31+d;
}
if(m==4){
count=28+31+30+d;
}
if(m==5){
count=28+31*2+30+d;
}
if(m==6){
count=28+31*2+30+31+d;
}
if(m==7){
count=28+31*2+30+31+30+d;
}
if(m==8){
count=28+31*2+30+31+30+31+d;
}
if(m==9){
count=28+31*2+30+31+30+31+31+d;
}
if(m==10){
count=28+31*2+30+31+30+31+31+30+d;
}
if(m==11){
count=28+31*2+30+31+30+31+31+30+31+d;
}
if(m==12){
count=28+31*2+30+31+30+31+31+30+31+30+d;
}
}
cout<<count<<endl;
}
return 0;
}
//可以看出,我的这种方法虽然能够通过,但是效率太低:
//下面是别人的代码:(尊重原作者,来自http://blog.csdn.net/vinacky/article/details/8770356)
#include<stdio.h> #include<iostream> using namespace std; int main() { int a,b,c,d; while(scanf("%d/%d/%d",&a,&b,&c)!=EOF) { d=0; if(b<=2) //一二月份 cout<<(b-1)*31+c<<endl; else if(b<=8) //三到八月份,记得不是七月份哦,一定要减八 { b-=3; if(b%2==0) d=(b/2)*61+c; else d=(b/2)*61+31+c; if(a%400==0||(a%100!=0&&a%4==0)) cout<<d+60<<endl; else cout<<d+59<<endl; } else //九到十二月份 { b-=8; if(b%2==0) d=(b/2)*61+c+153; else d=(b/2)*61+31+c+153; if(a%400==0||(a%100!=0&&a%4==0)) cout<<d+60<<endl; else cout<<d+59<<endl; } } return 0; } //还有一种方法 #include <iostream> #include<stdio.h> using namespace std; int main() { int a,b,c; while(scanf("%d/%d/%d",&a,&b,&c)!=EOF) { int d=0; if(((a%4==0&&a%100!=0)||a%400==0)&&b>2) d=1; for(int i=1;i<b;i++) { d+=31; switch(i) { case 2: d-=3;break; case 4: d--;break; case 6: d--;break; case 9: d--;break; case 11: d--;break; } } cout<<d+c<<endl; } }
//最后附上一个C实现的:(建议把我的当做一个效率的对比)#include<iostream> #include<stdio.h> int main() { int y,m,d,count=0; while(scanf("%d/%d/%d",&y,&m,&d)!=EOF){ if((y%4==0&&y%100!=0)||y%400==0) //如果是闰年 { if(m<=2){ count=(m-1)*31+d; } if(m==3){ count=29+31+d; } if(m==4){ count=29+31+30+d; } if(m==5){ count=29+31*2+30+d; } if(m==6){ count=29+31*2+30+31+d; } if(m==7){ count=29+31*2+30+31+30+d; } if(m==8){ count=29+31*2+30+31+30+31+d; } if(m==9){ count=29+31*2+30+31+30+31+31+d; } if(m==10){ count=29+31*2+30+31+30+31+31+30+d; } if(m==11){ count=29+31*2+30+31+30+31+31+30+31+d; } if(m==12){ count=29+31*2+30+31+30+31+31+30+31+30+d; } } else{ //如果是平年 if(m<=2){ count=(m-1)*31+d; } if(m==3){ count=28+31+d; } if(m==4){ count=28+31+30+d; } if(m==5){ count=28+31*2+30+d; } if(m==6){ count=28+31*2+30+31+d; } if(m==7){ count=28+31*2+30+31+30+d; } if(m==8){ count=28+31*2+30+31+30+31+d; } if(m==9){ count=28+31*2+30+31+30+31+31+d; } if(m==10){ count=28+31*2+30+31+30+31+31+30+d; } if(m==11){ count=28+31*2+30+31+30+31+31+30+31+d; } if(m==12){ count=28+31*2+30+31+30+31+31+30+31+30+d; } } cout<<count<<endl; } return 0; }