1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2011程序题

2011年程序员上半年下午试题 第1题 试题一(共15分) 阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。 【说明】 下面的流程图可在正文字符串T(1:L)中计算关键词字符串K(1:m)出现的次数(用n表示)。其中,L为字符串T的长度,m为字符串K的长度(mL)。为便于模糊查找,关键词中的字符“?”可以匹配任意一个字符。在流程图中,先从T中取出长度为m的子串存入A中,再将A与K进行逐个字符的比较(其中,K可以包含字符“?”)。注意:从正文字符串中取出的关键词字符串不允许交叉。 例如,“aaaaaa”中有3个关键词字符串“aa”。 【流程图】 答案及解析: (1)、 (2)、 (3)、 (4)、 (5)、 第2题 试题二(共15分) 阅读以下说明和C函数,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明1】 函数substring(const char str[],int index,int length)的功能是求出字符串str中指定序号index开始且长度为length的子串,并返回所取的子串。以字符串”China today”为例,其第一个字符“C”的序号为1(而其在字符数组str中的下标为0),从序号5开始且长度为3的子串为“at”。 【C函数1】 行号 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 char *substring(const char str[],int index,int length) { char *tptr=0; int k; /*参数错误,返回空指针*/ if(index1||length0||index+length-1strlen(str))return 0; tptr=(char*)malloc((length+1)*sizeof(char)); /*申请子串所需的存储区域*/ if(tptr=0) return 0; /*内存申请失败,返回空指针*/ for(k=0;klength;k++) tptr[k]=str[index+k-1]; tptr[length-1]=’\0’; /*字符串置结束标志*/ return tptr; } 【问题一】(共6分) 函数substring中有两处错误,请指出这些错误所在代码的行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行(有注释时,注释可省略)。 出错行号 修改正确后的完整代码 【说明2】 在C函数2中,reverse(unsigned int n)的功能是求出并返回n的反序数。例如,1234的反序数是4321,其求解过程如下: 由1234除以10得到商123和余数4,0乘以10再加上4得到4; 由123除以10得到商12和余数3,4乘以10再加上3得到43; 由12除以10得到商1和余数2,43乘以10再加上2得到432; 由1除以10得到商0和余数1,432乘以10再加上1得到4321; 【C函数2】 unsigned int reverse(unsigned int n) { unsigned int result=0; while( (1) ){ result=result*10+n%10; n=(2)_; } return result; } 【问题2】(共6分) 请根据说明2,填充C函数2中的空缺(1)和(2)。 答案及解析: (1)、 (2)、 【问题3】(共3分) 用567,123462354879643分别作为实参调用函数reverse,对应的返回值分别为765,43211357400630。请说明以62354879643作为实参调用函数rreverse时返回结果出错的原因。 答案及解析: 第3题 试题三(共15分) 阅读以下说明和C函数,回答问题1和问题2,将解答填入答题纸的对应栏内。 【说明】 对于具有n个元素的整型数组a,需要进行的处理是删除a中所有的值为0的数组元素,并将a中的所有非0元素按照原顺序连续地存储在数组空间的前端。下面分别用函数CompactArr v2来实现上述处理要求,函数的返回值为非零元素的个数。函数CompactArr_v1(int a[],int n)的处理思路是:先申请一个与数组a的大小相同的动态数组空间,然后顺序扫描数组a的每一个元素,将遇到的非0元素依次复制到动态数组空间中,最后再将动态数组中的元素传回数组a中。 函数CompactArr_v2(int a[],int n)的处理思路是:利用下标i(初值为0)顺序扫描数组a的每一个元素,下标k(初值为0)表示数组a中连续存储的非0元素的下标。扫

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档