2 cpohui CPOHUI 于 2017.01.15 12:13 提问

一道简单C语言编程题目,求助大神

这是ACM的OJ 系统的一道题我的代码里面显示答案错误,但是我运行结果是正确的啊求大神帮忙,看我错在哪里,求改进的方法,谢谢。求大神代码

这是题目

图片说明

图片说明

这是我写的代码

图片说明

求大神们解决的代码,谢谢了

7个回答

nnnn123456789_
nnnn123456789_   2017.01.15 13:38

死循环会记录TLE而不是WA

CPOHUI
CPOHUI ?可以说清楚点吗,我是小白,谢谢了
11 个月之前 回复
YXTS122
YXTS122   2017.01.15 12:45

题目看不清,把题目复制一下,我帮你看一下

CPOHUI
CPOHUI 前两张图片就是题目啊 麻烦帮我看一下
11 个月之前 回复
Water__Wei
Water__Wei   2017.01.16 22:20

代码部分最好不要截图,把代码粘贴进来,这样方便一点。

Water__Wei
Water__Wei   2017.01.17 12:35

不知道你有没有发现,第14行else部分,你把s2-t2>=0&&s1-t1>0的情况和s2-t2>=0&&s1-t1<=0的情况放在一起了。
导致当s2-t2>=0&&s1-t1>0时,p1=s1-t1+24,出现错误,此时正确的应该为p1=s1-t1。

如果测试数据09:50 04:20 可发现此错误。

shen_wei
shen_wei   Ds   Rxr 2017.01.17 15:47
 int main()
{
    int nHour1,nSecond1,nHour2,nSecond2,nH3,nS3;
    double fTime;
    while(scanf("%d %d %d %d",&nHour1,&nSecond1,&nHour2,&nSecond2) != EOF)
    {
        time_t nTime1 = nHour1 * 3600 + nSecond1 * 60;
        time_t nTime2 = nHour2 * 3600 + nSecond2 * 60;

        if (nTime1 <= nTime2)
        {
            fTime = difftime(nTime2,nTime1);
        }
        else
        {
            fTime = difftime(nTime1,nTime2);
        }   

        nH3 = int(fTime/3600.0);
        nS3 = int((fTime - nH3 * 3600.0) / 60.0);
        printf("%02d:%02d\n",nH3,nS3);
    }
    return 0;
}
shen_wei
shen_wei   Ds   Rxr 2017.01.17 16:11
 int main()
{
    int nHour1,nSecond1,nHour2,nSecond2,nH3,nS3;
    double fTime;
    while(scanf("%d %d %d %d",&nHour1,&nSecond1,&nHour2,&nSecond2) != EOF)
    {
        if (nHour1 > nHour2 || nSecond1 > nSecond2)
        {
            nHour2 += (23 - nHour1);
            nSecond2 += (60 - nSecond1);
            nHour1 = nSecond1 = 0;          
        }   

        time_t nTime1 = nHour1 * 3600 + nSecond1 * 60;
        time_t nTime2 = nHour2 * 3600 + nSecond2 * 60;


        fTime = difftime(nTime2,nTime1);            

        nH3 = int(fTime/3600.0);
        nS3 = int((fTime - nH3 * 3600.0) / 60.0);
        printf("%02d:%02d\n",nH3,nS3);
    }
    return 0;
}
redemptioner
redemptioner   2017.02.21 17:52

判断条件有问题:
条件1.if...:当前时间分钟小于睡觉时长分钟,并且当前时间时钟大于睡觉时间时钟
条件2.else.....:当前时间(之后简称当分)分钟大于等于睡觉时长分钟(之后简称睡分),或者(注意且的相反条件是或语句)当时小与等于睡时
分支条件1.if:...:当分小于睡分(不可能在条件2下实现),并且当时小于等于睡时。
分支条件2.else:.:因为分支条件1不可能实现,即等同与条件2
条件3.if:...:当时等于睡时,并且当分大于睡分(与条件2重复)

        总结一下,楼主列出的条件有: 当分小于睡分,并且当时大于睡时:例如:10:00 5:01
                                                         当分大于等于睡分,或者当时小于等于睡时,例如:5:01 10:00;5:01 10:02;10:00 5:01; 10:01 5:00
                                      所以设立的条件可能与楼主想达到的效果不同                                                          
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!