今天,给大家分享一个关于“然后是几点”的问题,可能很多没有学C语言,不了解C语言的看到这样的问题题目有点陌生。接下来就先给大家介绍一下什么是“然后是几点”
1、我们可以用具体数值来表示时间,比方说1106表示11时06分。
2、现在需要读入两个数值,第一个数值代表时间,比方说输入1120,则代表11时20分,第二个数值代表分钟数,比方说输入110,则代表现在从11时20分开始,时间往后走110分钟。
3、最终要求得到的结果为1310,则代表13时10分,当然,这只是其中一个测试用例,如果仅仅依据此测试用例来做题的话,容易产生考虑不全的问题。
输入输出都要不超过四位数字表示的时间,且当小时为个位数的时候,没有前导的零。
题目是能保证起始时间和终止时间在同一天内。
怎么处理这种问题呢?需要先来个逻辑梳理如下图所示,这就是这道题目所需要测试的几个关键测试点,只要解决了这几个测试点,这道题目也就能够完全解决了。
代码实现
那么,这道题目具体应该怎么来写,这道题目所需要用到的变量应该不少。
1、输入起始时间、流逝的分钟数,以及最后需要得到的终止时间,那是不是需要三个变量。
int Time;//起始时间 int m;//流逝的分钟数 int f;//终止时间
2、起始时间的前两位数代表小时数,后两位数代表分钟数,如果要进行加减,主要是要把这两部分的数给拆分开来进行加减。
那么,要得到前两位数,就需要输入的起始时间/100取整数,比方说1120/100取整则得到11时,而要得到后两位数,就需要输入的起始时间/100取余数,比方说1120/100取余则得到20分钟。
int h;//前半段小时 int minute;//后半段分钟 int e;//第一个整数部分的分钟与第二个整数流逝的分钟之和 h = Time/100;//输入的起始时间/100取整数 minute = Time%100;//输入的起始时间/100取余数 e = m + minute;//计算得到的分钟数
3、最复杂需要理解的一部分就在这里
我们知道,60分钟等于一小时,那么当分钟数满足超过60的时候,60的部分就可以进位为一小时,如果是增加时间,那就在小时那部分加1,如果是减少时间,那就在小时那部分减1。
如果为正,就按照正常逻辑走即可,在进行过计算得到的分钟数后,除以60,得到整数则可以加到小时数上,取得的余数也可以用于加。
最终得到的终止时间就可以写做是100*前半部分的小时+后半部分的分钟。
如果为负,则需要换一种思路,在进行过计算得到的分钟数后,除以60,得到整数则可以用小时数来减去这部分整数,如果取得的余数部分仍未负数,那就在进行该整数计算的基础上再额外减去1,余数部分补位+60,得到正数。
最终得到的终止时间就可以写做是前半部分的小时与后半部分的分钟分开来写。
最终正确代码
//然后是几点 #include<stdio.h> int main(){ int Time;//起始时间 int m;//流逝的分钟数 int f;//终止时间 int h;//前半段小时 int minute;//后半段分钟 int e;//第一个整数部分的分钟与第二个整数流逝的分钟之和 int q;//加减得到后的分钟数取整,用于小时进位 int w;//加减得到后的分钟数取余,用于计算终止时间的分钟 int r;//终止时间的小时 scanf("%d %d", &Time, &m); h = Time/100;//输入的起始时间/100取整数 minute = Time%100;//输入的起始时间/100取余数 e = m + minute;//计算得到的分钟数 if(e>=0){ q = e/60;//除以60取整进位 w = e%60;//除以60取余代表分钟 r = h+q;//终止时间的小时部分 f = r*100+w;//终止时间 printf("%d", f); } else if(e<0){ q = (-e)/60;//除以60取整进位 w = (-e)%60;//除以60取余代表分钟 r = h-q-1;//终止时间的小时部分,需要额外减去一 printf("%d%d", r,60-w); } }以上就是“怎么用c语言编程解决“然后是几点”的问题(C语言编程基础知识介绍)”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/9090/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料