2 cpohui CPOHUI 于 2017.01.15 12:13 提问

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

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

这是题目

图片说明

图片说明

这是我写的代码

图片说明

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

7个回答

nnnn123456789_
nnnn123456789_   2017.01.15 13:38

死循环会记录TLE而不是WA

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

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

CPOHUI
CPOHUI 前两张图片就是题目啊 麻烦帮我看一下
一年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言 每天做一道编程题
好久没做编程题了,算法和数据结构该忘的也都忘干净了,今天开始至少每天做道题,然后写写tips吧,各种都可以。 3.13 写了两道简单的PAT:3n+1(卡拉兹猜想)和将数字转换成拼音       主要是体会一下输入字符串的三种方式:       scanf("%s",s);//s是数组名,或者是指针。       gets(s);//可以包括空格,而scanf不可以包括空格      
求助:生成一个16*16数独终盘
QQ:1423173783    邮箱:1423173783@qq.com 我想在一秒内生成一个16*16数独的终盘。(终盘就是16*16都填满了,又符合每行每列每宫包含1,2,...16这些数) 当然是随机生成,如果构造一个我1ms就能造一个,还能造一堆。就是说随机生成一个终盘(这里不作严格要求:生成的那一个终盘是理论上有可能的任一个)。不需要如此严格的要求。只要1m内能生成一个随机的16*1
一道简单而又不简单的面试题
这是本篇文章要讲解的题目,在main方法中定义了两个成员变量a=1,b=2. 现在需要通过swap方法把a和b的值做一个交换,交换以后输出的结果是a=2,b=1.思路1大家看到这道题目的时候一定觉得很简单,不用做任何思考就把代码啪啪啪写完了 这种思维逻辑很对,大家从开始学编程就已经学到了中间变量的作用,好比是两个瓶子,一瓶是可乐,一瓶是雪碧,要是想把两个瓶子里面的饮料交换一下,,那么我们首先想
一道简单的java面试题
一道简单的java面试题
简单逆向题 实验吧之reversemeplz writeup
这道题目的链接: http://ctf5.shiyanbar.com/re/challenge 这是题目的下载地址先用file命令看下文件的属性这个程序是32位的,这样就可以拖进ida32位了然后先f5一波由此可知我们需要输入的数存在了s中,接着执行了sub_8048801这个函数我们进入这个函数这里又有一个函数sub_8048519我们再点进去看下这么长的一个函数。。。一般情况下不会让我们分析的...
安卓studio.doc
求助大神啊
洛谷P3768:简单的数学题 (杜教筛)
题目传送门:https://www.luogu.org/problem/show?pid=3768题目分析:我们来看一下,原先题目要我们求: ∑i=1n∑j=1nijgcd(i,j)\sum_{i=1}^{n} \sum_{j=1}^{n} ijgcd(i,j) 我们变形一下,将j只枚举到i。则原式转化成: 2∑i=1ni∑j=1ijgcd(i,j)−∑i=1ni32 \sum_{
有趣的题目(进制转换)
进制转换
dfs简单题目
1、桐桐的全排列(可在 http://acm.upc.edu.cn/problem.php?id=2355(中国石油acm网) 提交)Description 今天,桐桐的老师布置了一道数学作业,要求列出所有从数字1到数字n的连续自然数的排列,要求所产生的任一数字 序列中不允许出现重复的数字。因为排列数很多,桐桐害怕写漏了,所以她决定用计算机编程来解决。 Input只有一个整数n(1≤n≤9)。
牛的排序 代码
C++代码 一道简单的poj题目 快速排序