欢迎来到天天文库
浏览记录
ID:37725819
大小:26.68 KB
页数:11页
时间:2019-05-29
《初级程序员2011上半年下午试题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、初级程序员2011上半年下午试题试题一阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入对应栏内。 [说明] 下面的流程图可在正文字符串T(1:L)中计算关键词字符串K(1:m)出现的次数(用n表示)。其中,L为字符串T的长度,m为字符串K的长度(m<L)。为便于模糊查找,关键词中的字符“?”可以匹配任意一个字符。 在该流程图中,先从T中取出长度为m的子串存入A中,再将A与K进行逐个字符的比较(其中,K可以包含字符“?”)。注意:从正文字符串中取出的关键词字符串不允许交叉。例如,“aaaaaa”中有3个关键词字
2、符串“aa”。 [流程图] 试题二阅读以下说明和C函数,回答问题1至问题3,将解答写在对应栏内。 [说明1] 函数substring(constcharstr[],intindex,intlength)的功能是求出字符串str中指定序号index开始且长度为length的子串,并返回所取出的子串。以字符串“Chinatoday”为例,其第一个字符“C”的序号为1(而其在字符数组str中的下标为0),从序号5开始且长度为3的子串为“at”。 [C函数1]行号代码1234567891011121314char*substrin
3、g(constcharstr[],intindex,intlength){char*tptr=0;intk;/*参数错误,返回空指针*/if(index<1
4、
5、length<0
6、
7、index+length-1>strlen(Str))return0;tptr=(char*)malloc((length+1)*sizeof(char));/*申请了串所需的存储区域*/if(tptr=0)return0;/*内存申请失败,返回空指针*/for(k=0;k<length;k++)tptr[k]=str[index+k-1];tptr[le
8、ngth-1]=' ';/*字符串置结束标志*/returntptr;}1、函数substring中有两处错误,请指出这些错误所在代码的行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行(有注释时,注释可省略)。出错行号修改正确后的完整代码行 [说明2] 在C函数2中,reverse(unsignedintn)的功能是求出并返回n的反序数。例如,1234的反序数是4321,其求解过程如下: (1)由1234除以10得到商123和余数4,0乘以10再加上4得到4; (2)由123除以10得到商1
9、2和余数3,4乘以10再加上3得到43; (3)由12除以10得到商1和余数2,43乘以10再加上2得到432; (4)由1除以10得到商0和余数1,432乘以10再加上1得到4321。 [C函数2] unsignedintreverse(unsignedintn) { unsignedintresult=0; while( (1) ){ result=result*10+n%10; n= (2) ; } returnresult; }2、请根据说明2,填充C函数2中的空缺(1)和(2)。3、用567,123
10、4,56781234,62354879643分别作为实参调用函数reverse,对应的返回值分别为765,4321,43218765,1357400630。请说明以62354879643作为实参调用函数reverse时返回结果出错的原因。试题三阅读以下说明和C函数,回答问题1和问题2,将解答填入对应栏内。 [说明] 对于具有n个元素的整型数组a,需要进行的处理是删除a中所有值为0的数组元素,并将a中所有非0元素按照原顺序连续地存储在数组空间的前端。 下面分别用函数compactArr_v1和compactArr_v2来实现上述
11、处理要求,函数的返回值为非零元素的个数。 函数CompactArr(inta[],intn)的处理思路是:首先申请一个与数组a的大小相同的动态数组空间,然后顺序扫描数组a的每一个元素,将遇到的非0元素依次复制到动态数组空间中,最后再将动态数组中的元素传回数组a中。 函数CompactArr_v2(inta[],intn)的处理思路是:利用下标i(初值为0)顺序扫描数组a的每一个元素,下标k(初值为0)表示数组a中连续存储的非0元素的下标。扫描时,每遇到一个数组元素,i就增1,而遇到非0元素并将其前移后k才增1。 [C函数1]
12、 intCompactArrvl(inta[],intn) { inti,k; int*temp=(int*)malloc(n* (1) ); if(!temp) return-1; for(i=0,k=0;i<n;i++
此文档下载收益归作者所有