- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一部分 基础程序题
一 填空题
1.1.1这半查找(二分查找)是在有序且以顺序存储结构存储的静态查找表中进行查找的一种效率较高的查找方法。设顺序表存储在一维数组sstable中,其中有n个数据元素,数据元素用elem表示,数据元素的关键字满足下列条件:elem[1].key=elem[2].key=……=elem[n].key。
以下是折半查找算法。请将其补充完整。其中变量low、high和mid分别表示当前查找范围的下界、上界和中间位置。
int search_bin(sstable ST,KeyType key)
low=1
high=ST.length
while(lowhigh){
mid=(low+high)/2
if (key==ST.slem[mid]key )return mid
else if keyST.elem[mid]key
____high=mid-1_____________
else__________low=mid+1_____
}
return 0
1.1.2 设s和t是给定的两个字符串,在s中找到等于t的子串的过程称为模式匹配,其中s称为主串,如果在s中找到等于t的子串,则称匹配成功,否则匹配失败,下列算法是实现模式匹配的Brute-Force算法,其思想是,将s的第一字符与t中的第一字符进行比较。若不同,就将s中的第二个字符与t中的第一个字符进行比较……,直到s的某一个字符和t的第一个字符相同,再将它们之后的字符进行比较,若耶相同,再继续往下比较,一次类推,最后会出项两种结果:1.在s中找到与t相同的子串,匹配成功;2.将s的所有字符都检测完毕,找不到与t相同的子串,匹配失败。请将算法补充完整。
int string_match(string s,t) //从主串的第0个位置的字符开始比较
{
int i=0,j=0;
if(s.length==0||t.lengh==0)return -1 //串为空
while(i=s.length-1jt.length-1){ //逐趟比较开始
if(s[i]==t[j]){
____i++_______
____j++_____
}
else{
i=i-j+1;
j=0;
}
}
if(j==t.length)return i-t.length; //t扫描完毕,匹配成功
return -1; //匹配不成功
}
二、改错题(无需检查语法错误,描述逻辑错误并且在原有程序的基础上进行修改)
1.2.1下列程序用于解决百钱百鸡问题,即用100钱买100只鸡,公鸡五钱一只,母鸡三钱一只,雏鸡一钱三只,要求每种鸡至少要买一只,计算共有几种买法,请描述程序中的逻辑错误并且在原有程序的基础上进行修改。
public static void buyChicken(){
for(int cock=0;cock21;cock++){
for(int hen=0;hen34;hen++){
for(int chick=1;chick101;chick++){// 雏鸡最多买多少,上限应为301
if(5*cock+3*hen+chick/3==100chick%3==0cock+hen+chik==100)
{
System.out.println(“cock=”+cock+”hen=”+hen+”chick=”+chick)
}
}
}
}
}
public static void buyChicken(){
for(int cock=1;cock20;cock++){
for(int hen=1;hen34;hen++){
for(int chick=1;chick300;chick++){// 雏鸡最多买多少,上限应为301
if(5*cock+3*hen+chick/3==100chick%3==0cock+hen+chik==100)
{
System.out.println(“cock=”+cock+”hen=”+hen+”chick=”+chick)
}
}
}
}
}
1.2.2 下列程序的功能是解决2000以内哥德巴赫猜想问题(即对于任何大于4的偶数均可以分解为两个素数之和,素数是除1和其自身之外,没有其它约数的正整数),请描述程序中的逻辑错误并且在原有程序的基础上进行修改。
boolean Goldbach(){
int m,a;
boolean flag=false;
for(m=0,m=2000;m=m+2){
for(a=2;a=m/2;a++){
if (prime(a)==0prime(m-a)==0){//两素数之和,应改为prime(a)==1
您可能关注的文档
- 安徽中考英语模拟试题[2013年部分学校讲座用]12345[1].doc
- 安监大队1月份考试试题.doc
- 安监局考试题目9.2.doc
- 安庆办事处稽核业务知识测试题.doc
- 安庆人事考试网:2016安徽农信社(农商行)考试试题【计算机基础知识一】.doc
- 安庆人事考试网:2016年安徽事业单位招聘考试——公共基础每日一练试题(2.14).doc
- 安庆市2011-2012年第二学期七年级数学期末试题及答案.doc
- 安庆事业单位考试网:2015年安庆事业单位招聘考试——公共基础每日一练试题(2.12).doc
- 安庆事业单位考试网:2015年安庆事业单位招聘考试——行测知识每日一练试题(3.11).doc
- 安庆事业单位考试网:2015年安庆事业单位招聘考试——行测知识每日一练试题(2.11).doc
文档评论(0)