首页 > 试题广场 >

时间换算:用结构类型表示时间内容(时间以时、分、秒表示),输

[问答题]

时间换算:用结构类型表示时间内容(时间以时、分、秒表示),输入一个时间数值,再输入一个秒数n (n<60),以h:m:s的格式输出该时间再过n秒后的时间值(超过24点就从0点开始计时)。试编写相应程序。

#include <stdio.h>
   struct time{
       int hour;
       int minute;
       int second;
   };
int main()
{    
    struct time time1;
    time1.hour=0;
    time1.minute=0;
    time1.second=0;
    int n;
    scanf("%d:%d:%d %d",&time1.hour,&time1.minute,&time1.second,&n);
    time1.second+=n;
    if(time1.second>=60){
        time1.minute++;
        time1.second-=60;
    }
    if(time1.minute>=60){
        time1.minute-=60;
        time1.hour++;
    
    if(time1.hour>=24){
        time1.hour-=24;
    }
    printf("%02d:%02d:%02d",time1.hour,time1.minute,time1.second);
    return 0;
}

发表于 2018-12-18 16:57:52 回复(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;
}

发表于 2022-02-20 21:36:37 回复(0)
/*时间换算*/
#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;
}

发表于 2019-07-24 20:07:51 回复(0)
#include<stdio.h>
struct time{
int hour,minute,second;
};
int main(void)
{
int n;
struct time tim;
printf("请输入h m s") ;
scanf("%d %d %d",&tim.hour,&tim.minute,&tim.second);
printf("请输入n:");
scanf("%d",&n);

tim.hour=(tim.hour*60*60+tim.minute*60+tim.second+n)/3600%24;
tim.minute=(tim.minute*60+tim.second+n)/60%60;
tim.second=(n+tim.second)%60;


printf("%d:%d:%d\n",tim.hour,tim.minute,tim.second);
return 0;
}
编辑于 2019-05-22 10:07:03 回复(0)