以後發代碼記得把換行加上,方便調試;
#include<stdio.h>//問題見圖片
#include<math.h>
#include<string.h>
int main()
{?
char s[1000];
char* p;?
int check,sum,hour,min,sec;?
do
{?
scanf("%s",s);?
if(s[0]=='$'&&s[1]=='G'&&s[2]=='P'&&s[3]=='R'&&s[4]=='M'&&s[5]=='C')
{?
p=&s[7];
for(;*p != 'A';p++);
if(*p == 'A')
{?
check = s[1];?
for(p = &s[2]; *p != '*'; p++)
{?
check = check^(*p);
}?
check %= 65536;
p++;?
sum=0;
for(;*p != '\0';p++)
{
if(*p >='0' && *p<='9')
{?
sum = sum+16*(*p-'0');
}?
else if(*p >= 'A' && *p <= 'F')
{
sum = sum+16*(*p-'A'+10);?
}?
}?
if(sum == check)
{?
hour=(s[7]-'0')*10+s[8]-'0'+8;?
if(hour>=24)?
hour-=24;
min=(s[9]-'0')*10+s[10]-'0';
sec=(s[11]-'0')*10+s[12]-'0';
printf("%02d:%02d:%02d\n",hour,min,sec);
}
}
}?
}
while(strcmp(s,"END")!=0) ;
return 0;
}