时间换算:用结构类型表示时间内容(时间以时、分、秒表示),输入一个时间数值,再输入一个秒数n (n<60),以h:m:s的格式输出该时间再过n秒后的时间值(超过24点就从0点开始计时)。试编写相应程序。
#include<stdio.h>
typedef struct time{
int hours;
int minutes;
int seconds;
}Time; //定义表示时间的结构体 time,并使用别名 Time来代替 struct time 去定义结构体变量
Time time_update(Time now,int n);
int main(void){
Time t = {0,0,0}; // 定义一个时间类型的结构体变量并初始化
int n;
printf("input time(h m s):");
scanf("%d %d %d",&t.hours,&t.minutes,&t.seconds);
printf("input n:");
scanf("%d",&n);
t = time_update(t,n);
printf("n seconds later,it's %d:%d:%d\n",t.hours,t.minutes,t.seconds);
return 0;
}
/** now为当前时间,经过n秒后,返回时间 */
Time time_update(Time now,int n){
now.seconds += n;
/**存在进位的数据,要从最低位逐步往高位进位*/
if(now.seconds >= 60){ //若当前时间过了n秒后,进入下一分钟
now.seconds -= 60; /**当前时间经过n秒后可能会导致进位后还有余数,
比如1分58秒的3秒后为2分1秒,所以需要将过了n秒的秒数now.seconds减去60 */
now.minutes++;
if(now.minutes == 60){ //由于秒的进位导致分钟也需要进位
now.minutes = 0;
now.hours++;
if(now.hours == 24)
now.hours = 0;
}
}
return now;
}
/*时间换算*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct time
{ int hour; int minute; int second;
}time1;
int main(void)
{ int s; printf("Enter a time:"); scanf("%d%d%d", &time1.hour, &time1.minute, &time1.second); printf("Enter a s:"); scanf("%d", &s); time1.second += s; if (time1.second >=60) { time1.minute+=time1.second/60; time1.second = time1.second % 60; } if (time1.minute>=60) { time1.hour += time1.minute / 60; time1.minute = time1.minute % 60; } if (time1.hour >= 24) { time1.hour = time1.hour/24; time1.hour = time1.hour % 24; } printf("%d:%d:%d", time1.hour, time1.minute, time1.second); return 0;
}