软考中级习题与解答——第二章_程序语言与语言处理程序(3)

例题21

1、知识点总结

死循环的特征:

语法是否正确?

一个死循环,例如 for (int i = 0; i >= 0; i++) {},它的语法是完全正确的。编译器会愉快地接受它,不会报任何语法错误。

程序能否运行?

可以。程序会成功编译并开始运行。

行为是否符合预期?

不符合。程序员的意图是让循环在某个条件下结束,但由于逻辑设计上的缺陷,循环永远无法满足退出条件。程序会一直“卡”在循环里,无法继续执行后续代码,也无法正常退出。

这是一种典型的“逻辑错误”,即程序的实际行为与设计者的意图不符。

根据我们的知识点总结,这种“语法正确但逻辑错误”的问题,正是语义错误的典型特征。

2、选项分析

A. 语法: 错误。死循环的语法是正确的,编译器无法发现。

B. 语用: 不够准确。死循环不仅仅是代码风格或效率问题,它是一个根本性的逻辑缺陷,导致程序无法完成其预定功能。

C. 语义正确。死循环是典型的语义错误,因为它违反了程序的逻辑意图。

D. 语境: 不是一个标准的错误分类,且与死循环的性质不符。

3、最终答案:C


例题22

1、知识点总结

这道题考察的是使用正则表达式来描述一个特定模式的字符串集合。要解决这类问题,需要理解正则表达式的基本运算符:

连接 : ab 表示字符'a'后面紧跟着字符'b'。

或 / 并集: a|b (有时也写作 a+b) 表示可以是字符'a'或者字符'b'。

克林闭包 / 星号 : a* 表示字符'a'可以出现0次或多次(例如:空字符串, "a", "aa", "aaa", ...)。

括号: (ab)* 表示字符串"ab"这个整体可以出现0次或多次(例如:空字符串, "ab", "abab", ...)。

2、选项分析

字符串中的1可以随时出现,任意多次。这可以用1*来表示。0必须成对出现才能保证是偶数个。一个“对”就是00。但是,0和0之间可能被1隔开。例如0110也是偶数个0。因此,我们可以把“生成两个0”的最小单元看作是 0 后面跟上任意个1,然后再跟上一个0,即 01*0。在这些“成对的0” (01*0) 之间,以及在字符串的开头和结尾,都可以有任意数量的1。

3、最终答案:B


例题23

1、知识点总结

类型系统是程序设计语言的一个核心组成部分,它是一套规则,用于为程序中的各种值(变量、表达式、函数等)分配和管理名为“类型”的属性。

类型系统的主要作用/优点:

  • 类型检查: 最重要的作用。通过在编译时或运行时检查操作的合法性,可以防止大量的类型错误,如将字符串和整数相加、调用对象上不存在的方法等。这大大减少了运行时错误,提高了程序的可靠性。
  • 空间分配: 编译器根据数据类型,可以精确地知道需要为变量分配多少内存空间,从而实现高效的内存布局。
  • 封装意图: 类型为数据赋予了“含义”。int 不仅仅是4个字节,它代表一个整数。Date 不仅仅是8个字节,它代表一个日期。这使得程序员可以从底层的二进制表示中解放出来,在更高的抽象层次上思考问题。
  • 代码自解释: 明确的类型声明本身就是
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值