逻辑行计数

本文介绍了如何计算一种特殊编程语言的逻辑行数,该语言包含两种字符串和两种注释方式。逻辑行数由不在注释或字符串内的分号数量决定。文章详细描述了处理不同字符的情况,如字符串、注释、分号等,并提供了错误处理,如未终止的字符串或块注释。最后,概述了算法的实现思路和步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

背景

有一个软件公司常常用一种不为人知的语言来开发程序,这个语言的特点如下:

  1. 有两种形式的字符串,一种为加单引号,另一种加双引号。单引号的字符串可以包含双引号,双引号的字符串也可以包含单引号。字符串不能分行,其中也不能包含同样的引号字符。
  2. 有两种注释方式:@字符为行注释,而双括号(())内的文本为块注释。
  3. 块注释不能嵌套,所有在块中的文本均被忽略。一个块可以包含几行文本。
  4. 注释不能出现在字符串内。
  5. 在块注释中的行注释字符和引号都是没有意义的。
  6. 注释行中的双括号和引号都是没有意义的。
  7. 程序的任何部分都不能出现“#”字符;即使在字符串或注释内。
  8. 分号用来终止语句和生命。每个不在注释或字符串中的分号都被作为程序逻辑行的结束。

可以用逻辑行数来粗略地评估程序的大小,即计算不在注释或字符串内的分号的个数。写一个程序读进去几组程序代码,对每组代码都输出逻辑行数和物理行数,并对未终止的注释块和字符串发出警告消息。

输入

输入包含一个或多个程序,以#表示每个程序终止,以##表示输入终止。

输出

对于包括未终止字符串的行,输出:“Unterminated string in line n.”,其中n换成行号。

如果该程序包括一个未终止的块注释,以如下格式输出一行:”Unterminated block comment at end of program.“

在错误信息之后,以如下格式输出一行:”Program

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值