C语言--计算追赶问题

######追赶问题

######不能按输出样例输出

#include
#include
int main()
{
    int h=0,m=0,s=0;
    double d,v1,v2,x1,x2,t,r,o,p,q;
    scanf("%lf%lf%lf",&d,&v1,&v2);
    scanf("%lf%lf%lf",&o,&p,&q);
    x1=v1*5/18,x2=v1*5/18;r=1000*d;
    if(v1>=v2)
        printf("None\n");
    else
    {
        double i=3600;
        t=r/(x2/x1);
        while(t/i!=0)
        {
            h++;
            i*=(h+1);
        }
        t=fmod(t,3600);double j=60;
        while(t/j!=0)
        {
            m++;
            j*=(m+1);
        }
        s=fmod(t,60);
        s=s+q;
        if(s>=60)
        {
            s++;
            s=fmod(s,60);
        }
        if(m>=60)
        {
            h++;
            m=m%60;
        }
        while(h>24)
        {
        h=h-24;
        }
        printf("%d:%d:%d\n",h,m,s);
    }
    return 0;
}

运行结果:170:49:0

输入样例
16.56
1.05 2.67
12:36:4.5
输出样例
22:49:24.50


#include<stdio.h>
#include<math.h>
int main()
{
    int h=0,m=0,s=0;
    double d,v1,v2,x1,x2,t,r,o,p,q;
    scanf("%lf%lf%lf",&d,&v1,&v2);
    scanf("%lf%lf%lf",&o,&p,&q);
    x1=v1*5/18,x2=v1*5/18;r=1000*d;
    if(v1>=v2)
        printf("None\n");
    else
    {
        t=r/(x2/x1);
        while(t >= 3600)
        {
            h++;
            t -= 3600;
        }
        while(t >= 60)
        {
            m++;
            t -= 60;
        }
        s = t;
        s += q;
        if(s>=60)
        {
            s++;
            s = s % 60;
        }
        if(m>=60)
        {
            h++;
            m = m % 60;
        }
        while(h>24)
        {
        h=h-24;
        }
        printf("%d:%d:%d\n",h,m,s);
    }
   

我输出的全是4:36:0
用作者的和第一个回答者的代码
不是很懂这些opq的意思
如果写的更详细一点或许我能帮到一点忙