习题9-1 时间换算

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。

输入格式:

输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n<60)。

输出格式:

输出在一行中给出hh:mm:ss格式的结果时间。

输入样例:

11:59:40
30
 

输出样例:

12:00:10

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<math.h>
 5 int main() {
 6     int hour = 0, min = 0, second = 0;
 7     int n = 0;                                        //整秒数
 8     int k = 0;                                    //k是临时变量
 9     scanf("%d:%d:%d", &hour, &min, &second);
10     scanf("%d", &n);
11     if (second + n >= 60) {                            //如果原来的秒加上n>60 则进入判断
12         k = (second + n) / 60;                //此处考虑的是,如果n>60呢,可能存在2秒的情况,下同
13         second = (second + n) % 60;
14         min = min + k;
15         if (min >= 60) {
16             k = min / 60;
17             min = min % 60;
18             hour = hour + k;
19             if (hour >= 24) {
20                 k = hour / 24;
21                 hour = hour - 24*k;
22             }
23         }
24 
25 
26     }
27     else {                            //如果原来的n加上秒小于60,则直接输出
28         second += n;
29     }
30 
31     if (hour < 10) {                //因为时间输出要两位数,所以此处用判断
32         printf("0%d:", hour);
33     }
34     else {
35         printf("%d:", hour);
36     }
37     
38     if (min < 10) {
39         printf("0%d:", min);
40     }
41     else {
42         printf("%d:", min);
43     }
44     if (second < 10) {
45         printf("0%d", second);
46     }
47     else{
48         printf("%d", second);
49     }
50     return 0;
51 }

这个题目很简单,是我考虑复杂了,(我考虑n可能存在>60的情况)我觉得还是要按照现实来,注释已经非常清楚啦!

 

posted @ 2020-10-19 20:48  沉梦昂志_doc  阅读(247)  评论(0编辑  收藏  举报