【急求】c语言 求两个时间的差值

Python014

【急求】c语言 求两个时间的差值,第1张

/*可以处理空格!!!*/

#include<stdio.h>

#include<string.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=0i<len++i)

if(_str[i]==' ')

{

for(j=ij<len-1++j)

_str[j]=_str[j+1]

--len

i=-1

continue

}

/*读小时*/

j=0

for(i=0i<len++i)

if(_str[i]==':')

break

else

j=j*10 + _str[i]-'0'

h = j

/*读分钟*/

j=0

for(++ii<len++i)

if(_str[i]==':')

break

else

j=j*10 + _str[i]-'0'

m = j

/*读秒*/

j=0

for(++ii<len++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())

}

DATA

SEGMENT

WORD1

DB

'input

the

data1:',0AH,0DH,'$'

WORD2

DB

'input

the

data2:',0AH,0DH,'$'

SPACE

DB

0AH,0DH,'$'

OUTPUT

DB

'the

max

data

is:',0AH,0DH,'$'

BUFFER

DB

20H

DB

0

DB

20H

DUP(0)

存输入字符,大小可改

DATA

ENDS

STACK1

SEGMENT

STACK

DB

20H

DUP(?)

STACK1

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA,SS:STACK1

START:

MOV

AX,DATA

初始化段

MOV

DS,AX

MOV

DX,OFFSET

WORD1

显示字符串

MOV

AH,09H

中断显示

INT

21H

MOV

AH,0AH

数据输入

INT

21H

MOV

CL,BUFFER+1

buffer的第二个空间存储的是输入数据的个数,做为循环值

DEC

CL

最后一个是0d,不是输入要比较的数据

MOV

SI,02

MOV

AL,BUFFER[SI]

存第一个数据

SUB

AL,30H

将数据转换为十进制

MOV

BUFFER[SI],AL

存储

在后十个空间

,以后的语句一样

LP:

INC

SI

SUB

SI,08H

MOV

AL,BUFFER[SI]

SUB

AL,30H

ADD

SI,08H

MOV

BUFFER[SI],AL

LOOP

LP

循环处理

MOV

DX,OFFSET

SPACE

显示字符串

,换行

MOV

AH,09H

中断显示

INT

21H

MOV

DX,OFFSET

WORD2

MOV

AH,09H

INT

21H

MOV

AH,0AH

数据输入

INT

21H

MOV

CL,BUFFER+1

MOV

SI,02

MOV

AL,BUFFER[SI]

存第二个数据

LP1:

SUB

AL,30H

将数据转换为十进制

MOV

BUFFER[SI],AL

存储

INC

SI

MOV

AL,BUFFER[SI]

SUB

AL,30H

MOV

BUFFER[SI],AL

LOOP

LP1

循环处理

MOV

DX,OFFSET

SPACE

显示字符串

,换行

MOV

AH,09H

中断显示

INT

21H

MOV

SI,02H

MOV

CL,BUFFER+1

LP2:

MOV

DL,BUFFER[SI]

取出第一个数据

MOV

AL,BUFFER[SI]+08H

取出第二个数据

CMP

AL,DL

比较大小

JGE

LP3

MOV

BUFFER[SI],DL

存较大的数据

INC

SI

LOOP

LP2

JMP

END1

LP3:

MOV

BUFFER[SI],AL

存较大的数据

LOOP

LP2

END1:

MOV

DX,OFFSET

OUTPUT

显示字符串

MOV

AH,09H

中断显示

INT

21H

MOV

BL,BUFFER+1

INC

BL

MOV

BH,0

MOV

AL,'$'

MOV

BUFFER[BX],AL

MOV

AX,OFFSET

BUFFER

ADD

AX,02H

MOV

DX,AX

送最大的数据显示

MOV

AH,09H

中断显示

INT

21H

MOV

AH,4CH

返回dos

INT

21H

CODE

ENDS

END

START

别人的