C语言程序设计CAP-第10章编程题-GPS数据处理

文章目录

即将上大学了,准备上一些先修课,翁恺老师的课感觉非常不错,我是一个初学者,有啥错误大佬们别打我。

依照学术诚信条款,我保证此作业是本人独立完成的,未完成该项作业的同学请完成后再来。

此编程题的题目如下

 

简单分析一下

题目依旧很长,但是这次每一句都得仔细看,我的直觉告诉我这题不简单,这题我接触一个新的东西:异或,也让我学到了进制的转化,更让我学到了看清题目的重要性,题目重点如下

  1. 每个字段的大小(长度)不一 (说明当找字符时不能只是数数)
  2. “*”为校验和识别符,其后面的两位数为校验和,代表了“$”和“*”之间所有字符(不包括这两个字符)的异或值的十六进制值。上面这条例句的校验和是十六进制的50,也就是十进制的80
  3. 十六进制值中是会出现A-F的大写字母
  4. 你的程序要读入一系列GPS输出,其中包含$GPRMC,也包含其他语句。在数据的最后,有一行单独的 END
  5. 从中找出$GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条$GPRMC语句,以最后一条语句得到的北京时间作为结果输出
  6. 其中,hh是两位数的小时,不足两位时前面补0;mm是两位数的分钟,不足两位时前面补0;ss是两位数的秒,不足两位时前面补0

读完题目,分析重点完后,发现此题最好需要用到字符串函数(为什么说最好呢?因为讨论区内有位厉害的同学没用到),所以需要有string.h头文件,至于字符串大小就整个1000吧,大点保险些。作为压轴题,我们最好写的优秀些,比如用上函数的知识啥的,初步可以写出如下代码

然后我们就该考虑如何获取正确时间了,看完重点后,就可以知道第一步应该是判断是否为$GPRMC语句,之后再判断是否为有效语句。按照题目,我们得先算异或值,然后把它转化成16进制,与校验值相符后,再判断是否已定位。都满足的话换算时间。代码可以这样写

整体代码可为

结果

因为懒,博文写的太晚,现在再登陆已经暂时看不到结果,但是分数是都拿到手了

原文链接:,转发请注明来源!

发表评论