- 2
- 0
- 约6.62千字
- 约 16页
- 2021-08-24 发布于北京
- 举报
2011上半年程序员考试真题及答案-下午卷
试题一
下面的流程图可在正文字符串T(1:L)中计算关键词字符串K(l:m)出现的次数(用n表示)。其中,L为字符串T的长度,m为字符串K的长度(mL)?为便于模糊查找,关键词中的字符“?”可以匹配任意一个字符。
在该流程图中,先从T中取出长度为m的子串存入A中,再将A与K进行逐个字符的比较(其中,K可以包含字符“? ”)。注意:从正文字符串中取出的关键词字符串不允许交叉。例如,“aaaaaa”中有3个关键词字符串“aa”。
【流程图】
阅读以下说明和流程图,填补流程图中的空缺(1)?(5),将解答填入答题纸的对应栏内。
(1) L-m+1或等价表示
(2) i+m-1或等价表示
(3) j+1或等价表示
(4) n+1或等价表示
(5) A(j)=K(j)或等价表示
根据题意,正文字符串中的各个字符依次存放在T(1),T(2),…,T(L)中,关键词字符串中的各个字符依次存放在K(1),K(2),,,K(m)*。显然i是字符数组T的动态下标指针。 为了与关键词字符串进行比较,题中需要每次从数组T中连续取出m个元素放在数组A 中。第1次将T(l:m)存入A(1:m),第2次将T(2:m+1)存入A(1:m),…,第i次就应将T(i:m+i-1)存入A(1:m),最后一次应将T(L-m+1:L)存入A(l:m)。因此,流程图的(2)中 应填m+i-1,由于m+i-1必须小于或等于L。当m+i-1L时,即当iL-m+1时,就不应该再取子串了。因此流程图的(1)处应填L-m+1。
流程图右下方一片描述了字符数组A(i),A(i+1),…,A(i+m-1)与字符数组K(1),K(2),…, K(m)的比较过程。题中用j表示数组K的动态下标指针,j=1,2,……,m。显然,数组A的动态下标指针为i+j-1(j=1,2,……,m)。两个字符数组都从左到右逐个字符地进行比较,如果发现有不一致的字符,就结束比较,将i增1后准备继续从数组T中取新的子串放在A中。 如果一直到比较结束,发现两个数组中对应的各个字符都是一致的,那么,就找到了一处关键词。此时,找到关键词的计数器n应增l(n+1—n)。因此,流程图的(4)处应填n+1
字符数组A与K的比较过程关键是逐个字符A(j)与K(j)的比较。由于允许模糊査找,即K(j)中的字符 ? 可以与任何字符匹配。因此,可以写成判断“A(j)=K(j) or K(j)= ?是否为真。只要K(j)= ?,比较结果就一定为真。因此,流程图的(5)处应填 A(j)=K(j)。如果比较结果为真,则还需要执行j+1→j,准备继续往下比较。因此流程图 的(3)处应填 j+1。
试题二
函数 substring(const char str[], int index, int length)的功能是求出字符串 str 中指定序号index开始且长度为length的子串,并返回所取出的子串。以字符串“China today” 为例,其第一个字符“C”的序号为1 (而其在字符数组str中的下标为0),从序号5开始且长度为3的子串为“at”。
【问题1】
函数substring中有两处错误,请指出这些错误所在代码的行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行(有注释时,注释可省略)。
本问题考查字符串运算及常见编程错误的处理。
求子串运算substring的原型如下:
根据题目说明,参数index为子串的位置序号(从1开始),length为子串的长度。 显然,在函数substring中,首先应判断参数的合理性,即index应不小于1,length应不小于0,同时,从index开始可以得到长度为length的子串,即index+length-1应不大于 最后一个字符的序号。因此,第6行的代码是正确的。
第7行申请动态内存块的语句是正确的。第9行的代码判断内存申请是否成功,其中,判断指针tptr的表达式tptr = 0有错误,即误用了 “==”与“=”,导致无论内存申请操作是否成功,在此都将tptr赋值为空指针,造成内存泄漏。
第10、11行代码用于从字符串str中复制子串,代码是正确的。第12行的代码设置 字符串的结束标志,为错误代码。由于所获得字符串的长度为length,其在动态数组tptr 的下标从0开始,因此,下标length-1为最后一个字符的下标,tptr[length-l] = ’\0’会导致 丢失最后一个字符,因此该语句中tptr的下标应为length。
【问题2】
请根据说明2,填充C函数2中的空缺(1)和(2)。
(1) n!=0 或 n0
(2) n/10
本问题考查整数运算。
从题中给出的运算过程可知,在所运算的整数不
您可能关注的文档
- 2000上半年程序员考试真题及答案-下午卷.doc
- 2001上半年程序员考试真题及答案-下午卷.doc
- 2002上半年程序员考试真题及答案-上午卷.doc
- 2002上半年程序员考试真题及答案-下午卷.doc
- 2003上半年程序员考试真题及答案-上午卷.doc
- 2003上半年程序员考试真题及答案-下午卷.doc
- 2004上半年程序员考试真题及答案-上午卷.doc
- 2004上半年程序员考试真题及答案-下午卷.doc
- 2004下半年程序员考试真题及答案-上午卷.doc
- 2004下半年程序员考试真题及答案-下午卷.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)