地纬招聘笔试题及部分答案_招聘笔试题及答案
地纬招聘笔试题及部分答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“招聘笔试题及答案”。
第一部分 基础程序题 一 填空题
1.1.1这半查找(二分查找)是在有序且以顺序存储结构存储的静态查找表中进行查找的一种效率较高的查找方法。设顺序表存储在一维数组table中,其中有n个数据元素,数据元素用elem表示,数据元素的关键字满足下列条件:elem[1].key
以下是折半查找算法。请将其补充完整。其中变量low、high和mid分别表示当前查找范围的下界、上界和中间位置。
int search_bin(table ST,KeyType key)low=1 high=ST.length while(low
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
//逐趟比较开始
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;cock
if(5*cock+3*hen+chick/3==100&&chick%3==0&&cock+hen+chik==100){ System.out.println(“cock=”+cock+”hen=”+hen+”chick=”+chick)} } } } } public static void buyChicken(){ for(int cock=1;cock
if(5*cock+3*hen+chick/3==100&&chick%3==0&&cock+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
flag=true;} } } return flag;} int prime(int n)//判断素数 { int i;for(i=2;i
flag=true;break;} } } return flag;} int prime(int n)//判断素数 { int i;for(i=2;i
三、程序阅读题
1.3.1阅读下列程序,写出程序的运行结果
两素数之和,应改为main(){ int a,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf(“b,c,d:%d,%d,%d”,b,c,d);}
运行结果:b,c,d:10,12,120
1.3.2阅读下时列程序,说明程序的功能,并计算但n=5时程序的计算结果。int fun(int n){ if(n==1)return 1;else return n*fun(n-1);} void main(){ int n;printf(“%d”,fun(n));} 功能:求n!运行结果:120
四、编程题(本题目主要考查应聘者对编程思路的理解,不限制编程语言)可以用类高级语言编写。
1.4.1 设两个正整数集合A和B(A、B的元素数最多为100个),请编写算法求出他们的并集A∪B,例如:A={2,1,3},B={4,3,5},A∪B={2,1,3,4,5}
#include #include int main(){
int a[100],b[100],c[100],tag;
int i,j,numa=0,numb=0,numc=0;
printf(“请输入集合A的个数:”);
scanf(“%d”,&numa);
printf(“请输入集合A的元素”);
for(i=0;i
scanf(“%d”,&a[i]);
printf(“请输入集合B的个数:”);
scanf(“%d”,&numb);
printf(“请输入集合B的元素”);
for(i=0;i
scanf(“%d”,&b[i]);///////////////////////////////////////////
for(i=0;i
{
tag=0;
for(j=0;j
{
if(a[i]==b[j])
tag=1;
}//for
if(tag==0)
c[numc++]=a[i];
}
for(i=0;i
c[numc++]=b[i];
printf(“AB的并集是:”);
for(i=0;i
printf(“%d ”,c[i]);
printf(“n”);
system(“pause”);
return 0;
}
1.4.2 编写算法,将一个十进制整数转换成相应 的二进制数 你这是c语言,不是c++.#include void main(){
int sum=0,a,k=1,b;cout>a;while(a){
b=a%2;
sum+=b*k;
k*=10;
a/=2;} cout
#include #include #include void main(){
char c[100];
char a[100];
int i,j,numc=-1,numd=-1,d[100];
// cout>a;
int len=strlen(a);
for(i=0;i
{
if(a[i]=='(')
{
c[++numc]='(';
d[++numd]=i;
}
else if(a[i]==')')
{
if(numc==-1)
{
c[++numc]='(';
d[++numd]=i;
}
else
{
if(c[numc]=='(')
{
numc--;
numd--;
}
else
{
c[++numc]='(';
d[++numd]=i;
}
}
}//else if
} //for
if(numd==-1)
cout
else
{
for(i=0;i
cout
cout
}
}
第二部分、作文题
你的表弟小文今年要参加高考,特向你了解大学的情况,请你写一封信,向小文介绍你的大学生活,能向他推荐你的学校更佳。写作要求,逻辑清晰,条理分明。