题目是这样的:

题目内容:

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

提醒:要小心跨日的换算。

输入格式:

一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

输出格式:

一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

输入样例:

903

输出样例:

103

我是怎么考虑这个问题的。首先我们知道了一个非常重要的已知条件,utc time=bjt time -8,意思是只要知道了bjt的时间,把bjt的小时减去8就得到utc的小时了,所以我们只要分离出utc的小时数和分钟数就可以了。

这是大概的思路。接着拿一个具体的时间举例来验证刚才的思路。

比如bjt时间是2038,意思是20点38分,那么怎么分离出小时数和分钟数呢?

2038对100取余就得到了分钟数了,2038-分钟数的结果再除以100就得到了小时数了。

这样行不行呢?经过调试,发现大部分时间是可以的,但是如果遇到538(意思是凌晨5点38分),就不行了

因为-8的话就出现负数了,这是不对的,这其实就遇到了时间隔天的问题,那么这里肯定要对小时和8比较一下

如果是大等于8,说明再当天时间,直接减8就行了,如果小于8,说明utc时间是前一天的时间,这时候就要用

BJT的小时数+24再减去8才得到正确的UTC小时。

这样直接输出小时数和分钟数就可以了。但是经过测试发现,如果输入的数据是8(0点8分),则输出的是168,按照上面的格式说明这个意思是1点68分,这是不对的,但其实我们明白168的意思是16点8分,正确的输出格式应该是1608才对,那怎么办?

很简单把小时数*100之后再加上分钟数就可以了,16*100+8=1608,ok这下没什么问题了。

/*

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。

现在,你的程序要读入一个整数,表示BJT的时和分。

整数的个位和十位表示分,百位和千位表示小时。

如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。

整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

*/

//需要一个变量保存用户输入的BJT时间

int BJT = 0;

//两个变量分别保存BJT时间的小时和分钟

int BJTh = 0;

int BJTm = 0;

//对输入的BJT时间限制(0~2359)

scanf_s("%d",&BJT);

if (BJT < 0)

{

printf("unexpected input,program will quit at once");

return 0;

}

if (BJT > 2359)

{

printf("unexpected input,program will quit at once");

return 0;

}

//分离出BJT时间的小时和分钟

BJTm = BJT%100;

BJTh = (BJT - BJTm) / 100;

/*

分离出来的小时数如果大于等于8,直接减去8 就是UTC时间

分离出来的小时数如果小于8则 把小时数加24, 再减去8就是UTC时间。24小时计时

*/

if (BJTh < 8)

{

//乘100之后就是最后UTC时间的千分位和百分位的和了。

printf("UTC time is:%d", ((BJTh + 24 - 8)*100)+BJTm);

return 1;

}

printf("UTC time is:%d",((BJTh-8)*100)+BJTm);

return 1;

2018.9.15更新

int main()

{

//保存用户输入的BJT时间

int BJT = 0;

//保存BJT里面的时间和分钟

int BJT_h = 0;

int BJT_m = 0;

//保存UTC时间

int UTC = 0;

scanf_s("%d", &BJT);

//校验数据合法性

if(BJT<0||BJT>2359)

{

printf("wrong input ,the program will quit at once");

return 0;

}

//从BJT时间分离出时间和分钟

BJT_h = BJT / 100;

BJT_m = BJT % 100;

if (BJT_h <= 8)

{

UTC = (BJT_h - 8 + 24) * 100 + BJT_m;

printf("%d",UTC);

}

else

{

UTC = (BJT_h - 8) * 100 + BJT_m;

printf("%d", UTC);

}

c语言 北京时间转换utc时间_c语言实战 BJT时间转化位UTC时间相关推荐

  1. utc时间转换为时分秒_C语言操作时间函数,实现定时执行某个任务小程序

    时间操作函数在实际项目开发中会经常用到,最近做项目也正好用到就正好顺便整理一下. 时间概述 由上图可知: 通过系统调用函数time()可以从内核获得一个类型为time_t的1个值,该值叫calenda ...

  2. c语言字 字符串转换成数组_C语言学习教程之详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include 总结 以上 ...

  3. c语言求字符串转换成双精度_C语言实现把字符串中的数字转换成整数

    ===Tips:点击上方 蓝字 关注并查看历史消息===   本题实现的功能是把字符串中的数字提取转换成整型数字,例如:若输入字符串"ab56cd87",则输出结果:以%d格式输出 ...

  4. c语言求字符串转换成双精度_C语言如何输出双精度浮点型数据

    展开全部 double,双精度浮点型,输出使用%lf.e68a843231313335323631343130323136353331333365666166short int,短整型,输出对应%d. ...

  5. 机械优化黄金分割法c语言编程,黄金分割法_机械优化设计_C语言程序.doc

    黄金分割法_机械优化设计_C语言程序黄金分割法_机械优化设计_C语言程序 黄金分割法的优化设计 实验报告 学院:机电工程 机制自动化11-03班 学号:541102010326 姓名:刘点点 1,黄金 ...

  6. c语言获取电脑时间转换成字符串,C语言:获取当前时间,并转为字符串

    C语言:获取当前时间,并转为字符串,这个功能挺常用的,记录一下: #include lt;time.hgt;#include lt;stdio.hgt; int main C语言:获取当前时间,并转为 ...

  7. c语言贪吃蛇最简单代码_C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!...

    点击上方"大鱼机器人",选择"置顶/星标公众号"福利干货,第一时间送达!指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机 ...

  8. c语言中输入字符转换成整数,c语言数字字符串转换成整数 C语言中如何将数字变成字符串啊?...

    C语言:把数字字符串转换成整型数字不懂时,别乱说:懂得时,别多说:心乱时,慢慢说:没话时,就别说. 运行环境:TC2. 把数字字符串转换成整型数字.比如说小编输入一个数字字符当你年轻时,你以为什么都有 ...

  9. c语言中调整颜色的函数_C语言中的输入输出函数

    点击上方"学士科技",选择"设为星标" 技术干货第一时间送达! 01 字符数据输入输出 字符数据输出函数putchar() C语言中字符数据输出使用的是putc ...

  10. c语言程序 中断函数示例,单片机_C语言函数_中断函数(中断服务程序)

    c语言中的中断函数注意事项 单片机_C语言函数_中断函数(中断服务程序) 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统. 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该 ...

最新文章

  1. liunx 学习笔记-wzq
  2. GLSL着色器周记02
  3. 各地结婚年龄出炉,哪个地方的人最晚婚?
  4. testlink自带java api_java如何连接testlink
  5. bzoj1038 [ZJOI2008]瞭望塔 枚举
  6. XPath: A Syntax for Describing Needles and Haystacks(Chapter 3 of XSLT 2nd Edition)
  7. mongodb数据库的启动和停止
  8. ios重签名工具ios-app-signer的使用
  9. 浪潮服务器硬盘阵列怎么做,浪潮智能RAID技术为数据存储保驾护航
  10. 二维邮局选址问题-带权中位数
  11. 分治算法--L型骨牌棋盘覆盖
  12. 暴雪修改手机500服务器错误,改造:500内部服务器错误
  13. 我去那个擅长搞事件营销的沸点天下到底收获了什么?
  14. tokenizer()和tokenizer.encode_plus()的区别
  15. Batch Momentum
  16. 对实体完整性和参照完整性的认识
  17. 《版式设计——日本平面设计师参考手册》目录—导读
  18. 随机生成指定面积单连通区域
  19. 从零开始的nrf52832蓝牙开发--蓝牙BLE主函数分析
  20. CCD彩色摄象机的主要技术指标

热门文章

  1. QT软件开发-基于FFMPEG设计录屏与rtsp、rtmp推流软件(支持桌面与摄像头)(四)
  2. 易语言下载别人的源码编译出来用不了_如何编译下载的易语言源码
  3. 数据清洗(data cleaning)
  4. 编译原理实验二:Bison
  5. 软件测试 | 测试开发 | Golang开发入门(一)
  6. QYT多链路融合通信网关(应急通讯、车载通讯、视频传输)应用
  7. Java ME引路蜂地图开发示例:第一个地图应用
  8. 三维数据平滑处理_基于CT人眶骨三维有限元模型的建立
  9. L1-060 心理阴影面积(5分)
  10. 网易云音乐源文件下载