程序为何输出结果有误呢,大家我看看,谢谢
有一道习题如下:下面的公式能用来计算两个日期之间的天数.首先分别算出各日期的N值,然后两个日期的N值相减,其差即为两个日期之间的天数.计算日期N值的方法如下:
N=1461*f(年,月)/4+153*g(月)/5+日;
其中
f(年,月)=-1,如月<3;否则,f(年,月)=年.
g(月)=月+13,如月<3;否则,g(月)=月+1.
又,如果计算下式
(N-621049)%7
得到0到6范围内的数.该数代表一周中相应的一天,即星期日到星期六.以上算式中的运算都是整数运算,试用以上公式,编写一个程序,读入两个日期,输出它们分别是星期几,和它们之间的天数.
所编程序如下:
#include<math.h>
main()
{
int y1,m1,d1,y2,m2,d2;
int s,v,t,g,n1,n2;
printf("input y1,m1,d1 and y2,m2,d2\n");
scanf("%d,%d,%d %d,%d,%d",&y1,&m1,&d1,&y2,&m2,&d2);
if(m1<3&&m2<3)
s=y1-1,v=y2-1,t=m1+13,g=m2+13;
else
s=y1,v=y2,t=m1+1,g=m2+1;
n1=1461*s/4+153*t/5+d1;
n2=1461*v/4+153*g/5+d2;
s=fabs(n1-n2);
v=fabs(n1-621049)%7;
t=fabs(n2-621049)%7;
printf("s=%d,v=%d,t=%d\n",s,v,t);
} 感到迷惑的是V值为何有误呀?
[此贴子已经被作者于2007-2-20 17:38:42编辑过]