习题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的情况)我觉得还是要按照现实来,注释已经非常清楚啦!