《编程思维与实践》1049.GPS数据处理

news2024/12/26 3:26:55

《编程思维与实践》1049.GPS数据处理

题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

注记: UTC为世界标准时间(0时区),东区加,西区减.

分两步实现:

1.判断是否为有效的语句:

有效需要满足三个条件:

①语句含$GPRMC,可以通过strstr搜索来判断;

②状态已定位,可以用sscanf来读取判断;

③异或结果与校验值相同,校验值的读取可以用提示中的sscanf.

2.求出北京时间,直接从字段1中就可读取,只需要将小时数+8(东八区)后模24即可(保证不超过24);

其中,如果有多个语句有效,则输出最后一个语句的结果(通过覆盖容易实现).

以下为sscanf的简单介绍:

sscanf的使用方式与scanf类似,%*表示跳过该内容,

集合操作: %[ 匹配内容 ] 满足贪婪性:连续读取满足要求的内容,不满足要求就停止读入不再处理后续内容.

%[a-z1-9]表示读取字符串中满足1-9或者a-z的内容(如下图);
在这里插入图片描述
%[ ^ , ]表示读取字符串非逗号的内容;

如果需要跳过某个字符只需要在格式化中输入这个字符即可,如: %*[ ^ ,], 就表示跳过逗号前的字符串和逗号.

注意的点:

1.数据中时间秒数的小数点后不一定是三位,所以读取定位状态时应该以第二个逗号为分界点而不是字符个数.

2.小时数如果是用整数输出则有可能不足两位,需要补前置0,格式化输出时%02d即可.

也可参考以下的分析:
在这里插入图片描述

代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 65536

int main()
{
	char s[1000];
    char h[3],min[3],sec[3];   //hour minute second
    int hour;
	while(scanf("%s",s)&&strcmp(s,"END")!=0)
	{
        char state;  //记录状态是否定位
        sscanf(s,"%*[^,],%*[^,],%c",&state);  //跳过两个逗号
		if(strstr(s,"$GPRMC")!=NULL&&state=='A') 
		{
			int judge=s[1];  //异或结果
			for(int i=2;s[i]!='*';i++)
			{
				judge^=s[i];
			}
			judge%=N; 
			int check;  //校验值
            sscanf(s,"%*[^*]*%x",&check);  //跳过* 读取十六进制的校验值
			if(judge==check)   //校验成功
			{
				h[0]=s[7];
				h[1]=s[8];
				h[2]='\0';
				min[0]=s[9];
				min[1]=s[10];
				min[2]='\0';
				sec[0]=s[11];
				sec[1]=s[12];
				sec[2]='\0';
				hour=(atoi(h)+8)%24;  //东八区
			}
		}
	}
	printf("%02d:%s:%s\n",hour,min,sec);  //02d表示不足2位前补0
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue学习笔记6】好用的 Vueuse 工具包

1. 安装Vueuse VueUse 的官方&#xff08;https://vueuse.org/&#xff09;的介绍说这是一个 Composition API 的工具集合&#xff0c;适用于 Vue 2.x 或者 Vue 3.x&#xff0c;用起来和 React Hooks 还挺像的。 VueUse 插件的安装 npm install vueuse/core2. 实现全屏功能 …

【三十天精通Vue 3】第二十七天 Vue 3的实战案例-接口进度条

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、安装进度条插件1.1 安装NProgress插件1.2 在Vue3中引入NProgress插件二、在路由中使用进度条2.1 在全局路由中使用进度…

ubuntu20.04安装搜狗输入法

搜狗输入法下载网址&#xff1a; https://shurufa.sogou.com/linux 选择x86_64版本 打开 系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言” 弹出“已安装语言”窗口&#xff0c;勾选中文&#xff08;简体&#xff09;&#xff0c;点…

【RPC、WebSocket】

文章目录 有HTTP协议为什么还要RPCTCPHTTP 和 RPCHTTP 和 RPC 有什么区别 有HTTP协议为什么还要WebSocket使用HTTP不断轮询长轮询WebSocket怎么建立WebSocket连接 有HTTP协议为什么还要RPC TCP TCP三个特点&#xff1a;面向连接、可靠、基于字节流。 基于字节流 字节流可以理…

Disabled PicPipeline: ImagesPipeline requires installing Pillow 4.0.0 or later

目录 一、scrapy是什么 二、问题以及原因 三、解决办法 1、确保系统已经安装了 Pillow 库。 2、安装 Pillow 库。 3、在项目根目录中添加 Pillow 的 .pth 文件。 一、scrapy是什么 Scrapy是一个用于从网站和Web应用中抓取数据的强大的Python库。Scrapy支持异步I/O和 Scr…

销售数据分析怎么做?这篇文章说清楚了

如何分析销售数据&#xff1f;分析销售数据有哪些指标&#xff1f;销售数据分析有什么作用&#xff1f; 销售数据是不是得通过数据分析软件啊&#xff1f; 本文将为您解答疑惑—— 一、分析销售数据的指标 从两个层面上来讲&#xff0c;一个是对销售情况的整体把控&#xf…

大学校友会管理APP系统开发 重温同学梦再叙校园情

互联网技术的深入发展&#xff0c;让各行各业对网络的依赖都逐渐加深&#xff0c;可以说网络在今天已经成为无数个你我他不可或缺的平台。学生时代是一生中最美好的时期&#xff0c;校友是社会高效重要的社会资本和无形资产&#xff0c;校友与校友之间信息交流也需要依靠互联网…

虚拟化转向容器的新方案,红帽正式推出虚拟化容器统一平台——openshift虚拟化

编辑 | 宋慧 出品 | CSDN 云计算 云原生、容器化&#xff0c;是近年 IT 界主要的话题之一。 数字化转型的浪潮下&#xff0c;技术在朝向更加有利于业务快速迭代的方向发展。据 CSDN 最新年度《中国开发者调查报告》数据显示&#xff0c;近一半的公司&#xff08;43%&#xff0…

爬虫|Python|ts格式的加密视频合并方法

前言&#xff1a; 爬虫的一些基本概念&#xff1a; 对于爬虫来说&#xff0c;没有道德&#xff08;比如&#xff0c;某些爬虫上w的并发&#xff0c;那么&#xff0c;一些小站可能就会崩溃&#xff0c;其实爬虫也是可以作为网络攻击的&#xff0c;假设有需要攻击的网站&#x…

Shell 脚本传递参数的两种方式:位置传参与指令式传参

Shell 脚本传递参数的两种方式 方式一&#xff1a;数字传参 直接传参 数字传递可以用$1 $2 $3 ......获取第一个第二个第三个参数&#xff0c;$0获取命令&#xff08;也就是你的文件名&#xff09;&#xff0c;$#可以查看总的参数个数 以下文件命名为param1&#xff08;shel…

rk3568平台调试typec口实现uvc输出,网络共享等功能

一、修改kernel相关配置 注意&#xff1a;一定要知道主控接线&#xff0c;那个物理口是otg的&#xff0c;然后要找准与之所连接的phy和控制器。然后处理CC1 CC2识别芯片&#xff0c;fusb302。默认sdk自带有驱动&#xff0c;需要配上中断脚和提供VBUS 5V的脚。用来判断角色是DF…

( “ 图 “ 之 拓扑排序 ) 210. 课程表 II ——【Leetcode每日一题】

❓210. 课程表 II 难度&#xff1a;中等 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如&#xff0c;想要学…

使用 docker 搭建 mysql 主从配置

真正的配置文件是docker中 /etc/my.cnf 拉取镜像 docker pull mysql:5.7启动主数据库和从数据库 docker run -p 3306:3306 --restartalways --name mysql_v1 -v /var/mysql/mysql_v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORDroot -d mysql:5.7 docker run -p 3307:3306 --res…

Neural Network笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…

java版企业电子招投标系统源码 spring boot+mybatis+前后端分离

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…

一体化管理系统如何使企业受益?

在当今世界&#xff0c;大多数企业使用管理系统来制定政策和程序&#xff0c;以帮助实现其业务目标。管理体系是用于确保企业能够管理实现其目标所需的所有任务的流程和程序的结构。 公司或企业会有支持客户、采购、项目、考勤、财务等管理系统&#xff0c;这些管理系统通常在…

OBCP部分考点总结

备份恢复&#xff1a; 恢复的最小力度&#xff1a;租户级 分布式事务&#xff1a; 参与者或者协调者宕机&#xff0c;全部参与者发送prepare ok&#xff0c;客户端会commit sql引擎&#xff1a; 不能使用常量的场景&#xff1a;between and 应该可以使用常量&#xff0c;被…

菁染料CY3标记氨Cyanine3-amine合成方式2247688-56-6

CY3-amine是一种荧光染料&#xff0c;其分子式为C36H52Cl2N4O ,分子质量616.745&#xff0c;具有良好的荧光性能和化学稳定性。 产品名称&#xff1a;菁染料CY3标记氨基&#xff1b;三甲川花菁染料标记氨基 英文名称&#xff1a;Cy3-amine&#xff1b;Cyanine3-amine 品牌商&a…

论文ai生成-一键生成论文的软件

ChatGPT自动写论文 ChatGPT可以使用生成的文本来帮助撰写学术论文&#xff0c;其中包括文章的大纲、段落和句子。但是&#xff0c;它并不会像一个完全替代人的写作工具一样让你“自动”写作。 虽然ChatGPT可以生成相当准确的语言&#xff0c;但它并不完美&#xff0c;它并不能…

Websocket的基本认识、使用与封装

目录 一、Websocket是什么 二、Websocket的基本使用 使用介绍 第一步 第二步 第三步 第四步 常用API介绍 WebSocket(url[, protocols]) WebSocket.readyState WebSocket.send(data) WebSocket.close([code[, reason]]) WebSocket.bufferedAmount WebSocket.exten…