| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2282 人关注过本帖
标题:各位大神,我写的这个代码还有没有更简单的写法?有的话怎么写?[em03]
只看楼主 加入收藏
初学者6
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2016-12-30
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:12 
各位大神,我写的这个代码还有没有更简单的写法?有的话怎么写?[em03]
#include<stdio.h>
int main()
{
    int n, H, M, h, UTC;
    scanf("%d", &n);
    if(0<=n<=2359)
    {
        H=n/100;
        M=n%100;
        if(H>=0&&H<=23)
        {
            if(M>=0&&M<=59)
            {
                if(H<8)
                {
                    h=24+H-8;
                    UTC=h*100+M;
                    printf("%d", UTC);
                }
                else
                {
                    h=H-8;
                    UTC=h*100+M;
                    printf("%d", UTC);
                }
            }
        }
    }
}
搜索更多相关主题的帖子: include 
2017-03-10 23:06
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:9 

#include<stdio.h>
int main()
{
    int n, H, M, h, UTC;
    scanf("%d", &n);
    if(0<=n<=2359)//if(0 <= n && n <= 2359 )

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-10 23:14
初学者6
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2016-12-30
收藏
得分:0 
回复 2楼 renkejun1942
这是题,  不能那样改!

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
2017-03-10 23:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用初学者6在2017-3-10 23:26:40的发言:

这是题,  不能那样改!
 
反正c是不支持这种写法   if(0<=n<=2359)  除非你自己研发一个编译器

DO IT YOURSELF !
2017-03-11 07:56
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 3楼 初学者6
还不能这样改?是必须这样改。

你的代码在用0或1和2359做比较,得出来的结果是永远为1.

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-11 10:44
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
if(H>=0&&H<=23)这个是不必要的
2017-03-11 11:07
初学者6
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2016-12-30
收藏
得分:0 
回复 6楼 ehszt
不要的话是错的  我试过了
2017-03-11 11:31
初学者6
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2016-12-30
收藏
得分:0 
回复 4楼 wp231957
可以这样写的(我用的编译器是Dev-c++)  我这个程序是对的   我只是想问有没有简单的写法 这个太麻烦了!

[此贴子已经被作者于2017-3-11 11:34编辑过]

2017-03-11 11:33
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
以下是引用初学者6在2017-3-11 11:31:57的发言:

不要的话是错的  我试过了

H的范围本来就超不过0-23,加个判断多此一举。
2017-03-11 12:00
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:11 
if(H<8)
                {
                    h=24+H-8;
                    UTC=h*100+M;
                    printf("%d", UTC);
                }
                else
                {
                    h=H-8;
                    UTC=h*100+M;
                    printf("%d", UTC);
                }
可写作
h=H-8+24*(H<8);
UTC=h*100+M;
printf("%d", UTC);
收到的鲜花
  • ehszt2017-03-11 12:17 送鲜花  1朵   附言:好
2017-03-11 12:11
快速回复:各位大神,我写的这个代码还有没有更简单的写法?有的话怎么写?[em03 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032607 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved