编程题

电信在计算用户费用时按每分钟 0.08 元计算,不足 1 分钟按 1 分钟计,每次 通话不超过 24 小时,最短为 1 秒。设计函数 double count(char *s,char *t) 计算通话的费用,s 表示通话开始时间,t 表示通话结束时间(数据均合法, 时间格式为:HH:MM:SS,HH,MM,SS 分别表示小时,分钟和秒)。

例如:count("14:05:23","14:05:30")的返回值为 0.08

          count("23:01:12","00:12:15")的返回值为 5.76

【正确答案】

double count(char s[],char t[])
{        h1=(s[0]-'0')*10+s[1]-'0';     m1=(s[3]-'0')*10+s[4]-'0';     s1=(s[6]-'0')*10+s[7]-'0';
         h2=(t[0]-'0')*10+t[1]-'0';     m2=(t[3]-'0')*10+t[4]-'0';     s2=(t[6]-'0')*10+t[7]-'0';
         t_start= h1*60*60+m1*60+s1;     t_end=h2*60*60+m2*60+s2;
         if(t_end>=t_start) interval=24*3600-t_start+t_end;     else interval=t_end-t_start;
        c=interval/60;     if(interval%60) c++;
        return c*0.08;
}

【答案解析】