/*可以处理空格!!!*/
创新互联是一家专业提供中站企业网站建设,专注与成都网站设计、成都做网站、H5建站、小程序制作等业务。10年已为中站众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
#includestdio.h
#includestring.h
struct TTime
{
int h,m,s;
long GetSec(){return 3600L*h+60*m+s;}
void StrToTime(char _str[])
{
int i,j,len=strlen(_str);
/*去空格*/
for(i=0;ilen;++i)
if(_str[i]==' ')
{
for(j=i;jlen-1;++j)
_str[j]=_str[j+1];
--len;
i=-1;
continue;
}
/*读小时*/
j=0;
for(i=0;ilen;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
h = j;
/*读分钟*/
j=0;
for(++i;ilen;++i)
if(_str[i]==':')
break;
else
j=j*10 + _str[i]-'0';
m = j;
/*读秒*/
j=0;
for(++i;ilen;++i)
j=j*10 + _str[i]-'0';
s = j;
}
void ToPlan(long t)
{
int hh,mm,ss;
hh = t/3600;
t%=3600;
mm = t/60;
t%=60;
ss=t;
printf("%2.2d:%2.2d:%2.2d\n",hh,mm,ss);
}
}Ta,Tb,Tc;
void main()
{
char a[105],b[105];
gets(a);
gets(b);
Ta.StrToTime(a);
Tb.StrToTime(b);
printf("sec: %ld, time: ",Tb.GetSec()-Ta.GetSec());
Tc.ToPlan(Tb.GetSec()-Ta.GetSec());
}
/**
time.c
定义一个结构体实现两个时间的加减
*/
#includestdio.h
#includestring.h
typedef struct
{
int seconds;
int minutes;
int hours;
}Time;
int checkTime(Time time);
void printTime(Time time);
void swap(Time *time1,Time *time2);//大的时间放在前面
Time subtract1(Time *first,Time *second);
Time subtract(Time *first,Time *second);//默认第一个时间比第二个大
int main()
{
Time time1;
Time time2;
Time time3;
char againch[5]="y";
while(strcmp(againch,"y")==0||strcmp(againch,"Y")==0)
{
int again=1;
while(again)
{
printf("输入时间1:");
scanf("%d:%d:%d",time1.hours,time1.minutes,time1.seconds);
if(checkTime(time1))
{
printf("-----输入时间格式错误!请重新输入\n");
again=1;
}
else
again=0;
}
again=1;
while(again)
{
printf("输入时间2:");
scanf("%d:%d:%d",time2.hours,time2.minutes,time2.seconds);
if(checkTime(time2))
{
printf("-----输入时间格式错误!请重新输入\n");
again=1;
}
else
again=0;
}
swap(time1,time2);
printf(" ");
printTime(time1);
printf(" - ");
printTime(time2);
time3=subtract(time1,time2);
printf(" = ");
printTime(time3);
printf("\n");
printf("继续[y/n]?:");
scanf("%s",againch);
}
return 0;
}
//检查时间的格式
int checkTime(Time time)
{
// printf("小时格式错误:%d\n",(time.hours=24||time.hours0));
// printf("分钟格式错误:%d\n",(time.minutes=60||time.minutes0));
// printf("秒格式错误 :%d\n",(time.seconds=60||time.minutes0));
return ((time.hours24||time.hours0)||(time.minutes=60||time.minutes0)||(time.seconds=60||time.minutes0));
}
//输出按个数输出时间
void printTime(Time time)
{
printf("%d:%d:%d",time.hours,time.minutes,time.seconds);
}
//大的时间放到第一个变量,小的时间方法哦第二个变量
void swap(Time *time1,Time *time2)
{
//保证第一个时间永远大于第二个时间
if(time2-hourstime1-hours)//如果有time
{
//交换两个时间的小时
time2-hours^=time1-hours;
time1-hours^=time2-hours;
time2-hours^=time1-hours;
//交换两个时间的分钟:
time1-minutes^=time2-minutes;
time2-minutes^=time1-minutes;
time1-minutes^=time2-minutes;
//交换两个时间的秒:
time1-seconds^=time2-seconds;
time2-seconds^=time1-seconds;
time1-seconds^=time2-seconds;
}
else if(time2-minutestime1-minutestime1-hours==time2-hours)
{
//交换两个时间的分钟:
time1-minutes^=time2-minutes;
time2-minutes^=time1-minutes;
time1-minutes^=time2-minutes;
//交换两个时间的秒:
time1-seconds^=time2-seconds;
time2-seconds^=time1-seconds;
time1-seconds^=time2-seconds;
}
else if(time2-secondstime1-secondstime1-minutes==time2-minutes)
{
//交换两个时间的秒:
time1-seconds^=time2-seconds;
time2-seconds^=time1-seconds;
time1-seconds^=time2-seconds;
}
}
//计算两个时间的差
Time subtract(Time *first,Time *second)//默认第一个时间比第二个大
{
Time result;
//先对秒进行相减
if(first-seconds=second-seconds)//如果第一个秒大于或者等于
{
result.seconds=first-seconds-second-seconds;
}
else//如果第一个的秒数小的话
{
first-minutes=first-minutes-1;//借位
first-seconds=first-seconds+60;
result.seconds=first-seconds-second-seconds;
}
//接着对分钟相减
if(first-minutes=second-minutes)//如果第一个秒大于或者等于
{
result.minutes=first-minutes-second-minutes;
}
else//如果第一个的秒数小的话
{
first-hours=first-hours-1;//借位
first-minutes=first-minutes+60;
result.minutes=first-minutes-second-minutes;
}
//交换后 默认第一个小时会大于第一个,没有借位的情况,不用
result.hours=first-hours-second-hours;
return result;
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言中有时间函数(time函数),可以打印出系统时间,相减就行。当然,也有各类延时函数。sleep族函数。
#include stdio.h
#include time.h
int main(void)
{
struct tm time_cha;
time_t t1,t2;
long int d;
int year, month, day,hour,min,sec;
scanf("%4d%2d%2d%2d%2d%2d",year,month,day,hour,min,sec);
time_cha.tm_year = year - 1900; //tm结构记录年为实际-1900
time_cha.tm_mon = month - 1;
time_cha.tm_mday = day;
time_cha.tm_hour = hour;
time_cha.tm_min = min;
time_cha.tm_sec = sec;
t1 = mktime(time_cha);//获得从1970年1月1日0时0分0秒以来过去的时间,秒
scanf("%4d%2d%2d%2d%2d%2d",year,month,day,hour,min,sec);
time_cha.tm_year = year - 1900; //tm结构记录年为实际-1900
time_cha.tm_mon = month - 1;
time_cha.tm_mday = day;
time_cha.tm_hour = hour;
time_cha.tm_min = min;
time_cha.tm_sec = sec;
t2 = mktime(time_cha);
d=t1-t2;//经过的时间差(秒)
printf("%ld\n", d);
return 0;
}