|
楼主 |
发表于 2018-8-13 15:42:58
|
显示全部楼层
写了好久,弄出来如下代码,不知为何系统验证总是不能通过,只好把它先贴在下面:
#include<stdio.h>
// $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
jiesu(char *p1)
{
char *p2;
p2=p1;
if(*p2=='E')
{
p2++;
if(*p2=='N')
{
p2++;
if(*p2=='D')
return 1;
}
}
return 0;
}
kaishi(char *p1)
{
char *p2;
p2=p1;
if(*p2=='$')
{
p2++;
if(*p2=='G')
{
p2++;
if(*p2=='P')
{
p2++;
if(*p2=='R')
{
p2++;
if(*p2=='M')
{
p2++;
if(*p2=='C')
return 1;
}
}
}
}
}
return 0;
}
yihuo(char *p)
{
int i,a;
a=*p;
for(i=1;*(p+i)!='*';i++)
{
a=a^*(p+i);
}
a=a%65536;
return a;
}
int jiaoyan(char *p)
{
int i,b=0;
for(i=0;*(p+i)!='*';i++);
i++;
for(;*(p+i)!='\0';i++)
{
if(*(p+i)>='0'&&*(p+i)<='9')
b=16*b+*(p+i)-'0';
else if(*(p+i)>='A'&&*(p+i)<='F')
b=16*b+*(p+i)-'A'+10;
}
return b;
}
dingwei(char *p)
{
int i;
for(i=0;*(p+i)!=',';i++);
i++;
for(;*(p+i)!=',';i++);
i++;
if(*(p+i)=='A')
return 1;
return 0;
}
shijian(char *p)
{
int i,j,hour=0,minute=0,second=0;
for(i=0;*(p+i)!=',';i++);
for(j=1;j!=3;j++)
{
hour=10*hour+*(p+i+j)-'0';
}
hour=hour+8;
if(hour>=24)
hour=hour-24;
if(hour>=10)
printf("%d:%c%c:%c%c",hour,*(p+i+3),*(p+i+4),*(p+i+5),*(p+i+6));
else if(hour>0)
printf("0%d:%c%c:%c%c",hour,*(p+i+3),*(p+i+4),*(p+i+5),*(p+i+6));
else printf("00:%c%c:%c%c",*(p+i+3),*(p+i+4),*(p+i+5),*(p+i+6));
}
main()
{
char a[100][100],*p,*p2;
int i=0,i_1=0,b,y,y_1,k=0,dy;
for(i=0;i_1!=1;i++)
{
gets(a[i]);
if(k==0)
p=a[i];
p2=a[i];
if(kaishi(p)==1)
k=1;
if(jiesu(p2)==1)
i_1=1;
}
p++;
y=yihuo(p);
y_1=jiaoyan(p);
dy=dingwei(p);
if(y==y_1&&dy==1)
shijian(p);
}
|
|