#5的程序有错误判断,但2月都按28天算的, 显然是不对的,下面我给过正确的算法:
以下代码在"创天中文VC++"中编译通过
复制内容到剪贴板
代码:
#include <stdio.h>
void main(){
int yy,mm,dd;
scanf("%d%d%d",&yy,&mm,&dd);
mm-=1; /*因为当月的天数可能只有几天,所以要从前一月算起*/
if(mm>7){ /*8月后的大小月不一样*/
dd+=31*4+30*3;
mm-=7;
}
if(mm>0){
if(mm % 2!=0){
dd+=(30+31)*mm/2;/*偶数个月的算法*/
}else{
dd+=30*(mm-1)/2+31*(mm+1)/2;/*奇数个月的算法*/
}
}
if(mm>1) dd-=2;/*月份包含2月就要减2天*/
if(((yy % 4==0)&&(yy % 100!=0)||(yy % 400==0))&&mm>0) dd+=1; /*因为前面算的是减2天,所以闰年再加一天*/
printf("%d",dd);
}说实话,我真想知道那个5行的代码是咋写的。
[
本帖最后由 编程小猪 于 2007-3-20 18:02 编辑 ]