B -识别浮点常量问题

news/2025/10/12 15:49:40/文章来源:https://www.cnblogs.com/sly-345/p/19136723

B - 识别浮点常量问题

Description

编译器在对程序进行编译之前,首先要进行语法分析。通常,程序被分解成若干个小单元,然后和语言的语法模式进行匹配。在分析表达式的时候,变量的类型在变量声明的时候就决定了;而常量的类型需要从常量的形式来判断。

假设你是自动编译器(ACM)开发小组的一员,负责Pascal语言编译器的开发。你的任务是分析程序分解模块送来的文件,判断其中包含的字符串是否合乎语法的Pascal浮点常量。

Pascal语言对浮点常量的语法要求是:一个浮点常量除了十进制数码之外,必须带有一个小数点或一个指数(紧接在字母e或E之后,在正式文档中也被称为比例因子)。如果该浮点常量含有小数点,则在小数点两侧都至少要有一个十进制数码。当然,在整个浮点常量或指数之前,也许会出现符号+或-。指数不能包含小数。空格也许会出现在浮点常量的前后,但不会出现在浮点常量中间。

请注意Pascal语言的语法规则没有对浮点数常量的取值范围作出任何假定。

Input

输入只有一行,就是有待识别的字符串。字符串的长度不超过255。

Output

请将分析的结果按以下样例的格式输出。如果输入文件中的字符串是Pascal浮点常量,请输出字符串“YES”,否则输出字符串“NO”。

Samples

Sample #1

Input 
Output 
1.2
YES
#include<bits/stdc++.h>
using namespace std;
int main() {string s;getline(cin, s);int len = s.size();int cnte = 0, dian = 0;int isp = 1;for (int i = 0; i < len; i++) {if (s[i] == 'E' || s[i] == 'e') {cnte++;if (i == 0 || i == len - 1) isp = 0;else if (!isdigit(s[i - 1])) isp = 0;else {for (int j = i + 1; j < len; j++) {if (s[j] == '.') isp = 0;}}} else if (s[i] == '.') {dian++;if (i == 0 || i == len - 1) isp = 0;if (!isdigit(s[i - 1]) || !isdigit(s[i + 1])) isp = 0;} else if (s[i] == '+' || s[i] == '-') {if ((i == 0 || s[i - 1] == 'e' || s[i - 1] == 'E') && (i < len && isdigit(s[i + 1]))) ;else isp = 0;} else if (!isdigit(s[i])) {isp = 0;}}if (cnte == 0 && dian == 0) cout << "NO" << endl;else if (cnte > 1 || dian > 1 || isp == 0) cout << "NO" << endl;else cout << "YES" << endl;return 0;
}

 

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

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

相关文章

小C语言--词法分析程序-A

小C语言--词法分析程序-A小C语言文法<程序>→<main关键字>(){<声明序列><语句序列>}<声明序列>→<声明序列><声明语句>|<声明语句>|<空><声明语句>→<…

查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量

MySQL 查看当前连接数 要查看当前MySQL服务器的活动连接数,可以使用以下SQL命令: SHOW STATUS LIKE Threads_connected; 这将返回当前打开的连接数。 配置最大连接量 在MySQL中,可以通过设置 max_connections系统变…

2025宿舍上下床厂家权威推荐榜:耐用设计与空间优化口碑之选

2025宿舍上下床厂家权威推荐榜:耐用设计与空间优化口碑之选行业背景分析随着教育事业的蓬勃发展和企业住宿需求的持续增长,宿舍家具市场迎来了新一轮的发展机遇。在众多宿舍家具品类中,上下床作为空间利用率最高的产…

IS-IS核心解析:驱动现代网络的隐形力量 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

梳理一下Java中为保证线程安全提供了那些方案 - 浪矢

目录同步机制 加锁synchronized 关键字Lock 接口原子操作类并发安全的集合类线程局部变量volatile关键字 同步机制 加锁 synchronized 关键字 对方法或代码块加锁(在JVM层面) 当我们使用synchronized时,Java虚拟机(…

处理Git错误:“invalid object [hash]”和“unable to read tree [hash]”

当在使用Git时遭遇“invalid object [hash]”或“unable to read tree [hash]”错误消息,通常表明Git在尝试读取不一致或损坏的数据时遇到了问题。这些错误可能由多种原因造成,包括但不限于磁盘错误、传输错误、文件…

2025厂房恒温恒湿设备厂家权威推荐榜:精准控温与节能技术深

2025厂房恒温恒湿设备厂家权威推荐榜:精准控温与节能技术深在工业制造领域,厂房环境的恒温恒湿控制已成为保障产品质量、提升生产效率的关键环节。随着2025年制造业升级步伐加快,企业对生产环境的要求日益严格,精密…

raspberry + pycharm failed

raspberry + pycharm failedroc@raspberrypi:~/Downloads $ tar -zxvf pycharm-2025.2.3-aarch64.tar.gz roc@raspberrypi:~/Downloads $ mv pycharm-2025.2.3 ../roc@raspberrypi:/usr/lib/jvm/java-17-openjdk-armhf…

面向对象编程实验一

1.实验任务一:**reverse和reverse_copy有什么区别?** 答:reverse和reverse_copy都是将一个容器里的元素倒置,区别在于前者是将倒置后的新序列依旧存储在原来的容器中,而后者是将倒置后的序列放在一个新的容器中,…

ABC 427 EF

E \(BFS\) 求最短路 需要注意到,所有垃圾是作为整体一起移动的,因此可能存在垃圾的所有区域一定是原图的某个子矩阵(子矩阵之外的其他区域至少有过一次出界,说明垃圾已被清除),只有 \(H^{2}W^{2}\) 种。而整张图…

SHA256文件完整性校验

命令行工具 ‌Windows‌: Get-FileHash -Algorithm SHA256 文件路径 或使用certutil命令: certutil -hashfile 文件名 SHA256 ‌ Linux/macOS‌: sha256sum 文件名

基于OpenEuler--docker容器化部署ceph集群 - 实践

基于OpenEuler--docker容器化部署ceph集群 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

接口导入 jmeter

1. 浏览器中,选中接口 - 右键 - copy - copy as cURL(bash) 2. bin 目录下启动 jmeter.bat 3. Jmeter 工具栏 - Import from cURL 4. 粘贴从浏览器复制的接口信息,点击 Create Test Plan,接口导入成功。 5. 自定义线…

深入理解MySQL的MVCC(多版本并发控制)实现原理

MySQL的多版本并发控制(MVCC)是一种用于提高数据库并发性能的技术,它允许在不锁定资源的情况下执行读取操作,同时保证事务隔离性。MVCC在InnoDB存储引擎中得到了广泛应用。 MVCC工作原理 1. 隐藏列和行版本控制 In…

Kubernetes环境下Nginx代理Nacos服务请求故障诊断

在Kubernetes环境下,使用Nginx作为代理服务器转发请求到Nacos服务时,可能会遇到各种故障。故障诊断通常需要遵循一定的步骤和方法。检查Nginx配置:确认 nginx.conf中的代理设置是否正确配置了转发规则,包括正确的u…

备考笔记1

计算机组成原理:

2025年新型振动电机厂家权威推荐榜:创新技术与高效性能深度

2025年新型振动电机厂家权威推荐榜:创新技术与高效性能深度在工业4.0和智能制造浪潮的推动下,新型振动电机作为物料筛分、输送、压实等环节的核心设备,正迎来技术革新的关键时期。与传统设备相比,新一代产品在能效…

完整教程:今日面试之快问快答:Redis篇

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SSL/TLS协议如何确保HTTP通信的安全

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议是网络安全的基石,它们为HTTP通信提供了一个安全的层次,通常被称为HTTPS。这些协议确保了在客户端与服务器之间传输的数据的机密性和完整性。 以下…

2025钢衬塑储罐厂家最新权威推荐榜:耐腐性能与结构强度双优

2025钢衬塑储罐厂家最新权威推荐榜:耐腐性能与结构强度双优在化工、环保、制药等工业领域,储罐设备的性能直接关系到生产安全与运营效率。钢衬塑储罐凭借其独特的结构优势——外层钢壳提供坚实支撑,内层塑料衬里确保…