NOIP 普及组初赛 · NOIP 2016 普及组初赛试题 第 10 题

选择题 · 答案 A · 考点:计算机系统组成

← 整套速查表 NOIP 普及组初赛 全部真题

题目

以下关于字符串的判定语句中正确的是()。

答案:A

考点

计算机系统组成

解题思维

这题考数据结构基础,拿到题先别急着看选项,脑子里过一遍线性表、串的定义和空串的概念,把每个选项跟定义对一对,就能一眼看出哪个是陷阱。

常见错误

最容易掉进两个坑:一是把空串和空格串搞混,以为全是空格的串就是空串,其实空格也是字符,长度肯定大于0;二是觉得串必须有内容,忽略了空串这种特殊情况,长度可以是0;三是看到C语言里字符串用char数组存着,就误以为不能叫数组,其实char[]就是数组,只是专门用来存字符的数组。

详细解析(节选)

这道题考什么

这题考查的是字符串(串)的基本概念和数据结构分类。在NOIP初赛这类题目里,命题人特别喜欢拿几个容易混淆的定义来挖坑,比如空串和空格串的区别、线性表的抽象定义、以及存储结构的具体实现。考频上看,串相关题目在历年计算机基础部分出现频率稳定,2016年这道就是典型代表,说明这类基础概念辨析是必考项。

知识点人话讲清楚

字符串是什么? 字符串就是一串字符排在一起,比如"hello"。从数据结构角度看,它本质上是线性表——元素一个接一个,有顺序,有头有尾。只不过这里的元素全是字符,所以叫"串"。

线性表是个很宽泛的概念,数组、链表、队列都是线性表。字符串只是其中一种特殊形式,所以A选项说"字符串是一种特殊的线性表",这话完全站得住脚。

空串和空格串是两个完全不同的东西,这也是命题人最爱设的陷阱。

空格也是字符!C语言里空格就是ASCII码32,它和普通字母一样算一个元素,所以由空格组成的串绝对不是空串。

串能不能用数组表示? 能,而且是最常用的表示方法。C语言里char[]就是字符数组,比如char s[] = "abc";,s就是一个数组,存的就是字符串。所以"字符串不可以用数组来表示"这种说法纯属瞎扯。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断