华为校招2013-2016年机试题目-个人整理五篇

时间:2019-05-13 10:41:28下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《华为校招2013-2016年机试题目-个人整理》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《华为校招2013-2016年机试题目-个人整理》。

第一篇:华为校招2013-2016年机试题目-个人整理

2016校招机试题

第一题

输入一串用空格隔开的数字串,对于数字串的奇数位按升序排序,偶数位按降序排序 示例输入:4 6 2 3 7 8 1 处理过程:

奇数位:4268升序排序结果:2468 偶数位:6371 降序排序结果:7631 结果输出:2 7 4 6 6 3 8 1 #include #include #include void sort(char input[], int n, char output[]);void main(){ char input1[]=“4 6 2 3 6 7 8 1”;char output1[16];int m=15;sort(input1,m,output1);for(int i=0;i

printf(“%c ”,output1[i]);printf(“n”);}

void sort(char input[],int n,char output[]){ int i,j,t1,t2,t=0;int *b=(int *)malloc(sizeof(int)*n);int *c=(int *)malloc(sizeof(int)*n);

b[0]=input[0]-'0';for(i=4,t1=1;i

for(j=t1-1;((input[i]-'0')=0);j--)

{

b[j+1]=b[j];

}

b[j+1]=input[i]-'0';}

c[0]=input[2]-'0';for(i=6,t2=1;i

for(j=t2-1;((input[i]-'0')>c[j])&&(j>=0);j--)

{

c[j+1]=c[j];

}

c[j+1]=input[i]-'0';}

for(i=0,j=0;i

output[i]=b[j]+'0';

output[i+1]=' ';

output[i+2]=c[j]+'0';

output[i+3]=' ';} } 2.精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴。精灵王子的跑步速度为17m/s,以这样的速度可能是无法逃出洞穴的。庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗法值10点。精灵王子的魔法值恢复的速度为4点/s,只能在原地休息状态时才能恢复。

现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T.你的任务是写一个程序帮助精灵王子计算如何在最短时间内逃离洞穴。若能逃出,输出“Yes”,并输出逃出所用的最短时间;若不能逃出,则输出”No“,同时输出精灵王子在剩下的时间内能走的最远距离。注意字母大小写。注意精灵王子跑步,闪烁或休息活动均以秒(s)为单位。且每次活动的持续时间为整数秒。距离的单位为米(m)。

注:M,S,T均是大于等于0的整数。由输入保证取值合法性,考生不用检查。提醒:

如果输入的S为0,则说明本身已经在出口,输出应为:Yes 0 如果输入的T为0(且S不为0),则说明已经没有时间了,输出应为:No 0 输入格式: M S T 输出格式:

Yes 逃出洞穴所用时间 或

No在洞穴塌陷前能逃跑的最远距离 10 #include void main(){ int M,S,T;int de1=0,de2=0;int start=T;scanf(“%d %d %d”,&M,&S,&T);if(S==0)

printf(“Yes 0n”);else {

}

} if(T==0)printf(“No 0n”);else { while(T){

T--;

if(M>=10)

{

M-=10;

de1+=60;

}

else

{

M+=4;

}

de2+=17;

if(de2

de2=de1;

if(de2>S)

{

printf(“Yes %dn”,start-T);

break;

}

else

{

printf(“No %dn”,de2);

break;

} }

}

2015校招机试题

第一题(60分):

按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8,“abc”,“123456789”,则输出为“abc00000”,“12345678“,”90000000” #include #include void main(){ int m,n,i,j,p=0;char str[1024];int a[10];scanf(“%d%d”,&m,&n);printf(“please input %d string:n”,m);for(i=0;i

scanf(“%s”,&str[p]);

a[i]=strlen(str+p);

p=p+a[i];

} p=0;for(i=0;i

if(a[i]

{

for(j=p;j

printf(“%c”,str[j]);

for(j=a[i];j

printf(“0”);

printf(“n”);

}

else if(a[i]==n)

{

for(j=p;j

printf(“%c”,str[j]);

printf(“n”);

}

else

{

for(j=p;j

printf(“%c”,str[j]);

printf(“n”);

for(j=n+p;j

printf(“%c”,str[j]);

for(j=0;j<(2*n-a[i]);j++)

printf(“0”);

printf(“n”);

}

p=p+a[i];

} } 第一题:拼音转数字

输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下: 描述: 拼音 yi er san si wu liu qi ba jiu

阿拉伯数字 1 2 3 4 5 6 7 8 9 输入字符只包含小写字母,所有字符都可以正好匹配 运行时间限制:无限制 内存限制:

无限制

输入:

一行字符串,长度小于1000 输出:

一行字符(数字)串 样例输入:

yiersansi 样例输出:

1234 #include #include void main(){ int i,j;char str[1000];char ch;scanf(“%s”,str);int len=strlen(str);for(i=0;i

switch(str[i])

{

case 'y':

printf(“1”);

i=i+2;

break;

case 'e':

printf(“2”);

i=i+2;

break;

case 's':

if(str[i+1]=='a')

{

printf(“3”);

i=i+3;

}

else

{

printf(“4”);

i=i+2;

}

break;

case 'w':

printf(“5”);

i=i+2;

break;

case 'l':

printf(“6”);

i=i+3;

break;

case 'q':

printf(“7”);

i=i+2;

break;

case 'b':

printf(“8”);

i=i+2;

break;

case 'j':

printf(“9”);

i=i+3;

break;

default:

break;

} } }

第二题:去除重复字符并排序

运行时间限制:无限制 内容限制:

无限制 输入:

字符串

输出:

去除重复字符并排序的字符串 样例输入:

aabcdefff 样例输出:

abcdef #include #include #include void solve(char *str , int len){

int i,hash[256];

memset(hash,0,sizeof(hash));

for(i=0;i

{

if(0==hash[str[i]])

hash[str[i]]=1;

}

for(i=0;i<256;++i)

{

if(0!=hash[i])

putchar(i);

} printf(“n”);} int main(void){

int len;

char str[1000];

while(scanf(“%s” , str)!= EOF)

{

len = strlen(str);

solve(str , len);

}

return 0;} 第三题:等式变换

输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。1 2 3 4 5 6 7 8 9 = X 比如:

12-34+5-67+89 = 5 1+23+4-5+6-7-8-9 = 5 请编写程序,统计满足输入整数的所有整数个数。输入:

正整数,等式右边的数字 输出:

使该等式成立的个数 样例输入:5 样例输出:21 #include #include

int ops[21];const char sym[3]={'+','-',' '};int result,num;

void dfs(int layer,int currentResult,int lastOp,int lastSum){ lastSum*=(layer>9)?100:10;

lastSum+=layer;

if(layer==9){

currentResult+=(lastOp)?(-1*lastSum):lastSum;

if(currentResult==result)

{

++num;

printf(“1”);

for(int i=2;i<=9;++i)

{

if(sym[ops[i-1]]!=' ')

printf(“ %c ”, sym[ops[i-1]]);

printf(“%d”,i);

}

printf(“=%dn”,result);

}

return;} ops[layer]=2;dfs(layer+1,currentResult,lastOp,lastSum);//Continue currentResult+=(lastOp)?(-1*lastSum):lastSum;ops[layer]=0;dfs(layer+1,currentResult,0,0);//Plus ops[layer]=1;dfs(layer+1,currentResult,1,0);//Minus } void main(){ while(scanf(“%d”, &result)!=EOF){

num=0;

dfs(1,0,0,0);

printf(“%dn”,num);} }

2014校招机试题

一、题目描述(60分):

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);#include #include void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);void main(){ char str[100];char sr[100];scanf(“%s”,str);int len=strlen(str);stringFilter(str,len,sr);

printf(“%sn”,sr);} void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr){ int i,j;int m=0;char hash[256];memset(hash,0,256);for(i=0;i

if(hash[pInputStr[i]]==0)

{

hash[pInputStr[i]]=1;

pOutputStr[m]=pInputStr[i];

m++;

}

} pOutputStr[m]='';}

二、题目描述(40分):

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:

1、仅压缩连续重复出现的字符。比如字符串“abcbc”由于无连续重复字符,压缩后的字符串还是“abcbc”。

2、压缩字段的格式为“字符重复的次数+字符”。例如:字符串“xxxyyyyyyz”压缩后就成为“3x6yz”。

要求实现函数:

void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度

【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例

输入:“cccddecc” 输出:“3c2de2c” 输入:“adef” 输出:“adef” 输入:“pppppppp” 输出:“8p” #include #include void stringZip(const char *pInputStr,long lInputLen,char *pOutputStr);void main(){ int i,j;char str[256];char sr[256];scanf(“%s”,str);int len=strlen(str);stringZip(str,len,sr);printf(“%sn”,sr);} void stringZip(const char *pInputStr,long lInputLen,char *pOutputStr){ int i=0,j;int m,z=0;while(i

m=0;

for(j=i+1;j

{

if(pInputStr[i]==pInputStr[j])

m++;

else

break;

}

pOutputStr[z]=m+1+48;

pOutputStr[z+1]=pInputStr[i];

z=z+2;

i=i+m+1;} pOutputStr[z]='';}

三、题目描述(50分):

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。补充说明:

1、操作数为正整数,不需要考虑计算结果溢出的情况。

2、若输入算式格式错误,输出结果为“0”。要求实现函数:

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例

输入:“4 + 7” 输出:“11” 输入:“4-7” 输出:“-3”

输入:“9 ++ 7” 输出:“0” 注:格式错误 #include #include #include void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);void main(){ char str[256];char sr[256];//scanf(“%s”,str);gets(str);printf(“n%sn”,str);int len=strlen(str);arithmetic(str,len,sr);printf(“%sn”,sr);} void arithmetic(const char* pInputStr,long lInputLen,char* pOutputStr)

{

int i,j,num1,num2,result,num_space;

char buffer[4];

bool add,sub;

add=sub=false;

for(i=0,num_space=0;i

{

if(pInputStr[i]==' ')

++num_space;

}

if(2!=num_space)

//空格数非法

{

pOutputStr[0] = '0';

pOutputStr[1] = '';

return;

}

num1=num2=0;

for(i=0;pInputStr[i]!=' ';++i)

{

if(pInputStr[i]>='0'&&pInputStr[i]<='9')

num1=num1*10+pInputStr[i]-'0';

else

//第一个操作数中有非法字符

{

pOutputStr[0]='0';

pOutputStr[1]='';

return;

}

}

for(j=i+1;pInputStr[j]!=' ';++j);

if(1!=j-i-1)

//运算符长度不合法

{

pOutputStr[0]='0';

pOutputStr[1]='';

return;

}

else

//操作符的长度为1

{

if('+'!=pInputStr[i+1]&&'-'!=pInputStr[i+1])

//操作符号非法

{

pOutputStr[0]='0';

pOutputStr[1]='';

return;

}

else

{

if('+'==pInputStr[i+1])

add=true;

if('-'==pInputStr[i+1])

sub=true;

for(i=j+1;i

{

if(pInputStr[i]>='0'&&pInputStr[i]<='9')

num2=num2*10+pInputStr[i]-'0';

else

//第二个操作数中有非法字符

{

pOutputStr[0]='0';

pOutputStr[1]='';

return;

}

}//for

if(add)

result=num1+num2;

else if(sub)

result=num1-num2;

memset(buffer,0,sizeof(buffer));

//itoa(result,buffer,10);

//将整数按10进制转换为字符串

sprintf(pOutputStr,“%d”,result);

//strcpy(pOutputStr,buffer);

}//esle

}//else

}

2013校招机试题

1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。#include #include #include

int delete_sub_str(const char *str,const char *sub_str,char *result){

char *temp;

int n,count=0;

n=strlen(sub_str);

temp=(char *)malloc(n+1);

memset(temp,0,n+1);

while(*str)

{

// memcpy(temp,str,n);

strncpy(temp,str,n);

if(strcmp(temp,sub_str)==0)

{

count++;

memset(temp,0,n+1);

str=str+n;

}

else

{

*result=*str;

str++;

result++;

memset(temp,0,n+1);

}

}

free(temp);

return count;}

void main(){

char s[100]={''};

int num=delete_sub_str(“123abc12de234fg1hi34j123k”,“123”,s);

printf(“The number of sub_str is %drn”,num);

printf(“The result string is %srn”,s);}

2、约瑟夫环是一个数学的应用问题:已知 n 个人(以编号1,2,3...n 分别表示)围坐在一张圆桌周围。从编号为 k 的人开始报数,数到 m 的那个人出列;他的下一个人又从 1 开始报数,数到m 的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include #include typedef struct Node {

int num;

struct Node *next;}LinkList;

LinkList * creat(int n){

LinkList *p,*q,*head;

int i;

p=(LinkList *)malloc(sizeof(LinkList));

p->num=1;head=p;

for(i=2;i<=n;i++)

{

q=(LinkList *)malloc(sizeof(LinkList));

q->num=i;

p->next=q;

p=q;

}

p->next=head;

/*使链表尾指向链表头 形成循环链表*/

return head;}

void fun(LinkList *L,int m){

int i;

LinkList *p,*s,*q;

p=L;

printf(“出列顺序为:”);

while(p->next!=p)

{

for(i=1;i

{

q=p;

p=p->next;

}

printf(“%5d”,p->num);

s=p;

q->next=p->next;

p=p->next;

free(s);

}

printf(“%5dn”,p->num);}

void main(){

LinkList *L;

int n,m;

n=9;m=5;

L=creat(n);

fun(L,m);

} 3.比较一个数组的元素

是否为回文数组 1234321 123 4 321 这个就是回文.“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。

设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。注意:

1.偶数个的数字也有回文数124421 2.小数没有回文数 #include #include void main(){ int i=0,j;char str[100];gets(str);int len=strlen(str);while(i

if(str[i]==str[len-i-1])

{

i++;

}

else

break;} if(i==len/2)

printf(“The %s is huiwen arrayn”,str);else

printf(“The %s is not huiwen arrayn”,str);}

4数组比较(20 分)

• 问题描述:

比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数 比如:

数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为 0 数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为 3 • 要求实现函数:

int array_compare(int len1, int array1[], int len2, int array2[])【输入】 int len1:输入被比较数组 1 的元素个数;

int array1[]:输入被比较数组 1;

int len2:输入被比较数组 2的元素个数;

int array2[]:输入被比较数组 2;

【输出】 无

【返回】 不相等元素的个数,类型为 int • 示例

1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:0

2)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6 函数返回:3 #include #include int array_compare(int len1,int array1[],int len2,int array2[]);void main(){ int n;int a1[]={3,4,5};int len1=3;//int a2[]={1,2,4,5,7};int a2[]={1,2,3,4,5};int len2=5;n=array_compare(len1,a1,len2,a2);printf(“%dn”,n);} int array_compare(int len1, int array1[],int len2,int array2[]){ int i=len1-1,j=len2-1;int m=0;while(i>=0&&j>=0){

if(array1[i]==array2[j])

{

i--;

j--;

}

else

{

i--;

j--;

m++;

}

} return m;}

5、约瑟夫问题

•问题描述:

输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值 m。从数列首位置开始计数,计数到 m后,将数列该位置数值替换计数值 m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序.比如:输入的随机数列为:3,1,2,4,初始计数值 m=7,从数列首 位置开始计数(数值 3 所在位置)

第一轮计数出列数字为 2,计数值更新 m=2,出列后数列为 3,1,4,从数值4所在位置从新开始计数

第二轮计数出列数字为 3,计数值更新 m=3,出列后数列为1,4,从数值1所在位置开始计数

第三轮计数出列数字为 1,计数值更新 m=1,出列后数列为4,从数值4所在位置开始计数

最后一轮计数出列数字为 4,计数过程完成。输出数值出列顺序为:2,3,1,4。

• 要求实现函数:

void array_iterate(int len, int input_array[], int m, int output_array[])【输入】int len:输入数列的长度;

int intput_array[]:输入的初始数列

int m:初始计数值

【输出】int output_array[]:输出的数值出列顺序

【返回】无

• 示例

输入:int input_array[] = {3,1,2,4},int len = 4,m=7

输出:output_array[] = {2,3,1,4} #include #include #include typedef struct Node { int num;struct Node *next;}Linklist;void array_iterate(int len,int input_array[],int m,int output_array[]);Linklist *creatL(int a[],int w);void main(){ int n=4;int array[]={3,1,2,4};int array1[4];int z=7;array_iterate(n,array,z,array1);for(int i=0;i

printf(“%d ”,array1[i]);} printf(“n”);} void array_iterate(int len,int input_array[],int m,int output_array[]){ int i,j=0,t;t=m;Linklist *head,*p,*q,*s;head=creatL(input_array,len);p=head;while(p->next!=p){

for(i=0;i

{

q=p;

p=p->next;

}

output_array[j++]=p->num;

t=p->num;

s=p;

q->next=p->next;

p=q->next;} output_array[j]=p->num;} Linklist *creatL(int a[],int w){ int i;Linklist *p,*q,*L;L=(Linklist *)malloc(sizeof(Linklist));L->num=a[0];p=L;for(i=1;i

q=(Linklist *)malloc(sizeof(Linklist));

q->num=a[i];

p->next=q;

p=q;} p->next=L;return L;}

6、手机号码合法性判断(20分)

问题描述: 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:86***。特点如下:

1、长度 13 位;

2、以 86 的国家码打头;

3、手机号码的每一位都是数字。

请实现手机号码合法性判断的函数要求:

1)如果手机号码合法,返回 0;

2)如果手机号码长度不合法,返回1

3)如果手机号码中包含非数字的字符,返回 2;

4)如果手机号码不是以 86打头的,返回 3;

【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。要求实现函数:

Int verifyMsisdn(char * inMsisdn)

【输入】char* inMsisdn,表示输入的手机号码字符串。

【输出】 无

【返回】 判断的结果,类型为 int。

示例

输入:inMsisdn =“869123456789“

输出:无

返回:1 输入:inMsisdn =“88***9“

输出:无

返回:3 输入:inMsisdn = “86***9“

输出:无

返回:0 #include #include int verifyMsisdn(char * inMsisdn);void main(){ int n;char str[100];gets(str);n=verifyMsisdn(str);printf(“%dn”,n);} int verifyMsisdn(char * inMsisdn){ int len;len=strlen(inMsisdn);if(len!=13){

return 1;} else {

for(int i=0;i

{

if((inMsisdn[i]<'0')||(inMsisdn[i]>'9'))

return 2;

}

if((inMsisdn[0]!='8')||(inMsisdn[1]!='6'))

return 3;

else

return 0;} }

7、使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind 是待替换的字符串,strReplace 为替换字符串。举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ #include #include void StrReplace(char* strSrc,char* strFind,char* strReplace);void main(){ char str[]=“ABCDEFGHIJKLMN”;char str1[]=“HIJ”;char str2[]=“ggg”;StrReplace(str,str1,str2);printf(“%sn”,str);} void StrReplace(char* strSrc,char* strFind,char* strReplace){ int len1,len2,z,i,j,p;len1=strlen(strSrc);len2=strlen(strFind);

for(i=0;i

p=z=i;j=0;

while(strSrc[p++]==strFind[j++])

{

if(j==len2)

{

for(p=0;p

strSrc[p+z]=strReplace[p];

}

} } }

8.算分数的问题,去掉一个最高分一个最低分,求平均分 #include int average(int a[],int n);void main(){ int m;int b[5]={2,1,4,7,3};m=average(b,5);printf(“%dn”,m);} int average(int a[],int n){ int i,j,temp;int sum=0;for(i=0;i

for(j=0;j

{

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

} } for(i=1;i

sum+=a[i];return(sum/(n-2));}

9、简单四则运算

• 问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值 注:

1、表达式只含

+,-, *, / 四则运算符,不含括号

2、表达式数值只包含个位整数(0-9),且不会出现0 作为除数的情况

3、要考虑加减乘除按通常四则运算规定的计算优先级

4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无 0 作为除数情况发生

5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况

• 要求实现函数:int calculate(int len,char *expStr)

【输入】int len: 字符串长度;char *expStr: 表达式字符串;

【输出】无

【返回】计算结果

• 示例

1)输入:char *expStr = “1+4*5-8/3”

函数返回:19

2)输入:char *expStr = “8/3*3”

函数返回:6

#include #include int calculate(int len,char *expStr);void main(){ int n;char str[]=“1+4*5-8/3”;//char *str=“1+4*5-8/3”;//注意此处不正确,因为函数calculate中要用指针str对字符串常量进行改变,这是不能改变的,//因为指针str只能代表字符串常量的首地址,没有分配数组空间;

n=calculate(9,str);printf(“%d n”,n);} int calculate(int len,char *expStr){ //先从中缀表达式“1+4*5-8/3”转换为后缀表达式“145*+83/-”

struct

{

char opdata[200];

int top;

}opstack;//定义操作符栈

opstack.top=-1;

int i=0;//遍历字符串的下标

int t=0;//当前后缀表达式的长度

char ch=expStr[i];

while(i

//while(ch!='')

{

switch(ch)

{

case '+':

case '-':

while(opstack.top!=-1)

{

expStr[t]=opstack.opdata[opstack.top];

opstack.top--;

t++;

}

opstack.top++;

opstack.opdata[opstack.top]=ch;

break;

case '*':

case '/':

while(opstack.top!=-1&&(opstack.opdata[opstack.top]=='*'||opstack.opdata[opstack.top]=='/'))

{

expStr[t]=opstack.opdata[opstack.top];

opstack.top--;

t++;

}

opstack.top++;

opstack.opdata[opstack.top]=ch;

break;

default:

expStr[t]=ch;

t++;

break;

}

i++;

ch=expStr[i];

}

while(opstack.top!=-1)//将栈中所有的剩余的运算符出栈

{

expStr[t]=opstack.opdata[opstack.top];

opstack.top--;

t++;

}

expStr[t]='';

printf(“%sn”,expStr);

//根据后最表达式计算结果

struct

{

int numeric[200];

int top;

}data;

data.top=-1;

i=0;

ch=expStr[i];

while(ch!='')

{

if(ch>='0'&&ch<='9')

{

data.top++;

data.numeric[data.top]=ch-'0';

}

else if('+'==ch)

{

int tmp=data.numeric[data.top-1]+data.numeric[data.top];

data.top--;

data.numeric[data.top]=tmp;

}

else if('-'==ch)

{

int tmp=data.numeric[data.top-1]-data.numeric[data.top];

data.top--;

data.numeric[data.top]=tmp;

}

else if('*'==ch)

{

int tmp=data.numeric[data.top-1]*data.numeric[data.top];

data.top--;

data.numeric[data.top]=tmp;

}

else if('/'==ch)

{

if(data.numeric[data.top]==0)

{

printf(“cannot be zero of the dividen”);

exit(1);

}

int tmp=data.numeric[data.top-1]/data.numeric[data.top];

data.top--;

data.numeric[data.top]=tmp;

}

i++;

ch=expStr[i];

}

return data.numeric[data.top];}

10、选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n 表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分

* 0.6 +大众评委 * 0.4,总分取整。如果没有大众评委,则总分=专家评委平均分,总分取整。函数最终返回选手得分。

函数接口 int cal_score(int score[], int judge_type[], int n)

#include int cal_score(int score[],int judge_type[],int n);void main(){ int s[5]={4,6,3,5,4};int type[5]={1,1,1,1,1};int m=cal_score(s,type,5);printf(“%dn”,m);} int cal_score(int score[],int judge_type[],int n){ int sum1=0,sum2=0;int i,j,p=0,q=0;int average;for(i=0;i

if(judge_type[i]==1)

{

p++;

sum1+=score[i];

}

else

{

q++;

sum2+=score[i];

}

} if(q==0){

average=sum1/p;} else {

average=sum1/p*0.6+sum2/q*0.4;} return average;}

11、给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度 n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置 的两边,按照一左一右的顺序,依次存放剩下的数。

例如:input[] = {3, 6, 1, 9, 7}

output[] = {3, 7, 9, 6, 1};

input[] = {3, 6, 1, 9, 7, 8}

output[] = {1, 6, 8, 9, 7, 3} #include #include

void sort(int input[], int n, int output[]);void main(){ int input1[]={3,6,1,9,7,8};int output1[6];int m=6;sort(input1,m,output1);for(int i=0;i

printf(“%d ”,output1[i]);printf(“n”);}

//先用简单选择排序

void sort(int input[], int n, int output[]){ int i,j,min,temp;for(i=0;i

min=i;

for(j=i+1;j<=n;j++)

{

if(input[j]

min=j;

}

if(min!=i)

{

temp=input[i];

input[i]=input[min];

input[min]=temp;

} } for(i=0;i

printf(“%d ”,input[i]);printf(“n”);output[n/2]=input[n-1];for(i=n-2,j=1;i>=0;i-=2,j++){

output[n/2-j]=input[i];

output[n/2+j]=input[i-1];} }

12、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于 255 的为非法任务,应予以剔除。现有一任务队列 task[],长度为n,task 中的元素值表示任务的优先级,数值越小,优先级越高。函数 scheduler 实现如下功能,将 task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在 task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}

system_task[] = {0, 3, 1, 7,-1}

user_task[] = {4, 8, 2, 6,-1}

函数接口

void scheduler(int task[], int n, int system_task[], int user_task[])

第二篇:华为机试题目总结(程序篇)

自己写的,水平很挫,仅供参考

目录

1.语言识别问题

2.销售网络问题(未完成)3.股票投资问题

4.判断手机号码合法性 5.元音字母复制 6.验证身份证号 7.选秀节目打分

8.数组最大值放中间,其他依次放其左右(规律未找着,未完成)

9.任务调度(解题关键,需要一个容器来承载下标跟值的一一对应关系,最好就是定义一个结构体)10.将某字符变成小写后的某个字符 11.链表的逆序 12.单词统计

13.字符串进行转换,转换成相应的数字已知:yi er san si wu liu qi ba jiu 分别对应,对一段只含有这几种字符的字符串进行转换,转换成相应的数字 14.一个数组中比平均数大的个数 15.求一个数组中第一大和第二大数 16.字符变成整数 17.整数变字符 18.判断素数问题

19(1).约瑟夫环(循环列表)19(2).约瑟夫环(数学方法只能求出最后的胜利者的序号)19(3).约瑟夫环(容器实现)20.判断某个整数是回文。即这样的,反过来还是 21.判断一个字符串是不是回文

22.求一个字符串中的最大回文子串,就是从n个字符开始检查是不是回文,知道m个字符符合回文,那么这个就是最大回文 23.找出^n的数

24.统计一个数二进制表达中的个数

25.镜像反转二进制表达式,并输出十进制值 26.连续字符统计

27.判断一个字符串中()是否配对 28.查找子字符串个数

29(1).找出一个字符串中是否包含相同(包括连续的)的子字符串(要求子串长度大于等于)并输出出现频率最高的子字符串

29(2)找出一个字符串中是否包含连续相同的子字符串,并输出出现频率最高的子字符串 30.删除字符窜中字符数最少的字符

31.关于数组的循环移位,左移为负,右移为正 32.求一个二维数组每列的最小值 33.两个字符串,求最长公共子串

34.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。这边我用的是数组 35.排序总结

36.将一个字符串空格分隔,并倒序输出 37.删除一个字符串中的某个字符串

38.取出一个字符串中所有的数字,并取出所有字母 39,简单的字符统计

40.查找字符串中空格分隔的单词的最大长度 41.二叉树的操作 42.分块查找

1.语言识别问题

#include

using namespace std;void main(){

int n,S_num=0,T_num=0,m=0;

cin>>n;

char ch;

getchar();

for(int i=0;i

// m=0;

while(1)

{

ch=getchar();

/* m++;

if((m>3)&&(ch=='n'))

{

m=0;

break;

}*/

if(ch=='n')break;

if(ch=='s'||ch=='S')S_num++;

if(ch=='t'||ch=='T')T_num++;

}

}

if(S_num

else cout<<“Deutschn”;

}

2.销售网络问题(未完成)

#include

using namespace std;void main(){

int n,S_num=0;

cin>>n;

int a[n];for(int i=0;i

cin>>a[i];if(a[])for(int i=0;i

// m=0;

while(1)

{

ch=getchar();

/* m++;

if((m>3)&&(ch=='n'))

{

m=0;

break;

}*/

if(ch=='n')break;

if(ch=='s'||ch=='S')S_num++;

if(ch=='t'||ch=='T')T_num++;

}

}

if(S_num

else cout<<“Deutschn”;

}

3.股票投资问题

#include

using namespace std;void main(){

int B,C=0,D=0,E=0,i,j,k,l,n,m;

int A;

int a[12];//未来天得股价

int b[12][12];

cin>>B;//测试数

memset(b,0,sizeof(b));

//for(i=0;i

cin>>A;for(j=0;j<12;j++)

cin>>a[j];

int temp=0;for(k=0;k<11;k++)

for(l=k+1;l<12;l++)

{

temp=A/a[k];b[k][l]=temp*(a[l]-a[k]);if(b[k][l]<0)

b[k][l]=0;

}

int max=b[0][1];m=0;n=1;

for(k=0;k<11;k++)

for(l=k+1;l<12;l++)

{

if(b[k][l]>max)

{ max=b[k][l];

m=k;

n=l;

}

if(b[k][l]==max)//相等的取购价低的 { if(a[k]

{ max=b[k][l];

m=k;

n=l;

}

}

}

if(max==0)

{cout<<“IMPOSSIBLE”<

}

else{

C=m+1;

D=n+1;

E=max;

cout<

}

}

4.判断手机号码合法性

#include

using namespace std;

int verifyMsisdn(char* inMsisdn){ int n=0;int i=0;int j=0;char *p;p=inMsisdn;

while(p[i]!='')

{

i++;

n++;

}

if(n!=13)

return 1;

else

{

while(p[j]!='')

{

if(!((p[j]>='0' && p[j]<='9')))

{return 2;

break;

}

j++;

} if(!(p[0]=='8'&& p[1]=='6'))return 3;else return 0;

}

}

void main(){

char a[20];cin>>a;int m=verifyMsisdn(a);

cout<

}

5.元音字母复制

#include

using namespace std;

void sortVowel(char* input){ int j=0;char output[50]={0};

for(int i=0;input[i]!='';i++)

{ if(input[i]=='a' || input[i]=='e'|| input[i]=='i'|| input[i]=='o'|| input[i]=='u')

{

output[j]=input[i];

j++;

}

}

int w=j;char temp;for(int k=0;k

if(output[l]>output[l+1])

{

temp=output[l];

output[l]=output[l+1];

output[l+1]=temp;

} }

for(int i=0;input[i]!=0;i++)

{ if(input[i]=='A'|| input[i]=='E'|| input[i]=='I'|| input[i]=='O'|| input[i]=='U')

{

output[j]=input[i];

j++;

}

}

char temp2;for(int m=w;m

if(output[n]>output[n+1])

{

temp2=output[n];

output[n]=output[n+1];

output[n+1]=temp2;

} }

cout<

char a[50];cin.get(a,50);

sortVowel(a);

}

6.验证身份证号

#include

using namespace std;

int verifyIDCard(char* input){ int n=0;int i=0;int j=0;char *p;p=input;

while(p[i]!='')

{

i++;

n++;

}

if(n!=18)

return 1;

else

{

while(j<17)

{

if(!((p[j]>='0' && p[j]<='9')))

{return 2;

break;

}

j++;

} if(!(p[17]=='x'||(p[17]>='0' && p[17]<='9')))return 3;else

{

int year=(p[6]-'0')*1000+(p[7]-'0')*100+(p[8]-'0')*10+(p[9]-'0');

int month=(p[10]-'0')*10+(p[11]-'0');

int day=(p[12]-'0')*10+(p[13]-'0');

if(!(year>=1900 && year<=2100))

return 4;else{

if(!(month>=1 && month<=12))

return 5;else{

//能被整除且不能被整除或能被整除的年份

bool ryear=(year%4==0 && year%100!=0)||(year%400==0);

if(!((!ryear && day>0 && day<29)||(ryear && day>0 && day<=29)))

return 6;

else{

return 0;

}

}

}

}

}

}

void main(){

for(int c=0;c<10;c++){char a[20];cin>>a;int m=verifyIDCard(a);

cout<

7.选秀节目打分

#include

using namespace std;#define N 5 int total(int score[],int judge_type[],int cn)

{ int sum1=0,sum2=0,m=0,n=0,aver=0,totalscore=0;

for(int i=0;i

{sum1+=score[i];

m++;

} else {

sum2+=score[i];

n++;}

}

if(n==0)

totalscore=sum1/m;

else

{ totalscore=(int)(sum1/m * 0.6+sum2/n * 0.4);}

return totalscore;

}

void main(){

int score[N];int judge_type[N];for(int i=0;i

cin>>judge_type[i];

cout<<“输入第”<

cin>>score[i];} int totalscore= total(score,judge_type,N);cout<

8.数组最大值放中间,其他依次放其左右(规律未找着,未完成)

#include using namespace std;

void sort(int input[], int n, int output[]){

int i,j;

int temp =0;

for(i =0;i

for(j =0;j

{

if(input[j]>input[j+1])

{

temp = input[j];

input[j] = input[j+1];

input[j+1] = temp;

}

}

if(n%2 ==0){

for(i =0;i

{

output[i] = input[2*i];

}

for(i =0;i

{

output[n/2+i] = input[n-1-2*i];

} } else {

for(i=0;i<(n-1)/2;i++)

{

output[i] = input[2*i+1];

}

output[(n-1)/2]= input[n-1];

for(i = 0;i<(n-1)/2;i++)

{

output[(n-1)/2+1+i] = input[n-3-2*i];

} }

for(i = 0;i

printf(“%d”, output[i]);} printf(“n”);}

int main(){ int input1[] = {3, 6, 1, 9, 7};int input2[] = {3, 6, 1, 9, 7, 8};

int output1[5] = {0};

int output2[6] = {0};

sort(input1, 5,output1);

sort(input2, 6, output2);} 9.任务调度

(解题关键,需要一个容器来承载下标跟值的一一对应关系,最好就是定义一个结构体)#include using namespace std;struct table { int number;

int value;};

void scheduler(int task[], int system_task[], int user_task[],int n){

struct table *sb=(struct table *)malloc(n*sizeof(struct table));

for(int i=0;i

sb[i].number=i;sb[i].value=task[i];

}

struct table temp;for(int k=0;k

for(int j=0;j

{

if(sb[j].value>sb[j+1].value)

{

temp=sb[j];

sb[j]= sb[j+1];

sb[j+1] = temp;

}

}

int cs=0,cu=0;for(int l=0;l

if(sb[l].value<50)

{system_task[cs]=sb[l].number;

cs++;

}

else if(sb[l].value<=255)

{user_task[cu]=sb[l].number;

cu++;

}

else

continue;

} system_task[cs]=-1;user_task[cu]=-1;

free(sb);

for(int m=0;m<=cs;m++)

{

cout<

}

printf(“n”);

for(int n=0;n<=cu;n++)

{

cout<

}

}

int main(){ int task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99};

int n=9;

int count_sys=0,count_user=0;for(int i=0;i<9;i++){

if(task[i]<50)

count_sys++;

else if(task[i]<=255)

count_user++;

else

continue;}

int *system_task=(int *)malloc(count_sys*sizeof(int)+4);int *user_task=(int *)malloc(count_user*sizeof(int)+4);

scheduler(task, system_task, user_task,9);//int *p = system_task;//int *q = user_task;//

////printf(“%d%dn”, count_sys,count_user);// for(int i=0;i

} // } // printf(“n”);// //

for(int i=0;i

free(system_task);

free(user_task);10.将某字符变成小写后的某个字符

#include using namespace std;void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr){

for(int i=0;i

{

if(pInputStr[i]>='V'&& pInputStr[i]<='Z')

pOutputStr[i]=pInputStr[i]+11;//('a''A');

else if(pInputStr[i]>='A'&& pInputStr[i]<='U')

pOutputStr[i]=pInputStr[i]+37;//('a''A');

else{pOutputStr[i]=pInputStr[i];}

}

cout<

}

void main(){ char *pInputStr=“Axs3mWss”;int n=0;while(pInputStr[n]!='')

n++;

long

lInputLen=n+1;

char *pOutputStr=(char *)malloc(sizeof(char)*(n+1));

TransferString(pInputStr,lInputLen,pOutputStr);

}

11.链表的逆序

#include using namespace std;typedef struct tagListNode {

int value;

struct tagListNode *next;

}ListNode;

//要求实现函数:

void converse(ListNode *head){

ListNode *p1,*p2,*p3;

p1=head;

p2=p1->next;

while(p2){

p3=p2->next;

p2->next=p1;

p1=p2;

p2=p3;} head->next=NULL;head=p1;while(p1!=NULL)

{

cout<

value<<“->”;

p1=p1->next;

} }

void main(){

ListNode *p,*head,*s;

head=(ListNode*)malloc(sizeof(ListNode));

p=head;

int n=0,m=0;

while(n<5)

{

cin>>m;

s=(ListNode*)malloc(sizeof(ListNode));s->value=m;

p->next=s;

p=s;

n++;

}

head=head->next;p->next=NULL;

converse(head);//p=head;//while(p!=NULL)//

{ //

cout<

value<<“->”;// p=p->next;//

//

}

}

12.单词统计

#include #include using namespace std;struct node { //int number;

int count;char a[10];};void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord){

//cout<

if(pInputStr1[i]>='A' && pInputStr1[i]<='Z')

pInputStr1[i]+=32;

i++;} const char * split = “,.”;

struct node sb[10]={0};//*sb=(struct node *)malloc(10*sizeof(struct node));char *p={0};

p=strtok(pInputStr1,split);int j=0;while(p!=NULL)

{ //sb[j].number=j;

strcpy(sb[j].a,p);

sb[j].count=0;

j++;

p=strtok(NULL,split);

}

for(int k=0;k<10;k++)

for(int l=0;l<10;l++)

{

if(strcmp(sb[k].a,sb[l].a)==0)

sb[k].count+=1;

}

struct node max;

struct node min;

int dex1=0,dex2=0;

max=sb[0];

min=sb[0];

for(int m=0;m

{

if(sb[m].count>max.count)

{ max=sb[m];

dex1=m;}

else if((sb[m].count

{

min=sb[m];

dex2=m;}

}

/*for(int m=0;m

{

cout<

cout<

}*/

strcpy(pOutputHotWord,sb[dex1].a);strcpy(pOutputColdWord,sb[dex2].a);cout<<“最高”<

}

void main(){ char

pInputStr[100]={0};cin.get(pInputStr,100);

char * pOutputHotWord=(char *)malloc(sizeof(char *)*100);

char * pOutputColdWord=(char *)malloc(sizeof(char *)*100);

memset(pOutputHotWord, 0, sizeof(pOutputHotWord));

memset(pOutputColdWord, 0, sizeof(pOutputHotWord));WordStat(pInputStr, pOutputHotWord,pOutputColdWord);}

13.字符串转换成规定数字

转换成相应的数字已知:yi er san si wu liu qi ba jiu 分别对应,对一段只含有这几种字符的字符串进行转换,转换成相应的数字

如:yiersansan:

#include #include using namespace std;

int WordStat(const char * pInputStr, char * pOutputWord){

int i=0,d=0,k=0,sum=0;char *pInputStr1=(char *)malloc(100*sizeof(char));strcpy(pInputStr1,pInputStr);//(char *)char* sss[9] = {“yi”, “er”, “san”, “si”, “wu”, “liu”, “qi”, “ba”, “jiu”};while(pInputStr1[i]!=''){

if(pInputStr1[i]=='y' || pInputStr1[i]=='e'|| pInputStr1[i]=='w'|| pInputStr1[i]=='q'|| pInputStr1[i]=='b')

d=2;

if(pInputStr1[i]=='l' || pInputStr1[i]=='j')

d=3;

if(pInputStr1[i]=='s')

{ if(pInputStr1[i+1]=='a')

d=3;

if(pInputStr1[i+1]=='i')

d=2;

}

for(int j=0;j<9;j++)

{

if(strncmp(pInputStr1+i,sss[j],d)==0)

k=j+1;

} sum=sum*10+k;

i+=d;} return sum;

}

void main(){ char

pInputStr[100]={0};cin.get(pInputStr,100);

char * pOutputWord=(char *)malloc(sizeof(char *)*100);

memset(pOutputWord, 0, sizeof(pOutputWord));

int transver= WordStat(pInputStr, pOutputWord);cout<

}

14.一个数组中比平均数大的个数

#include #include using namespace std;

int count(int p[], int n){

int sum=0,m=0;for(int i=0;i

sum+=p[i];} int aver=sum/n;for(int j=0;j

if(p[j]>aver)

m++;} return m;}

void main(){ cout<<“输入个数n”<>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i>a[i];}

int m=count(a,n);

cout<

}

15.求一个数组中第一大和第二大数

#include #include using namespace std;

void count(int p[], int n){

int max=0,smax=0,k=0;for(int i=0;i

if(p[i]>max)

{ max=p[i];

k=i;

} }

for(int j=0;j

if(p[j]>smax)

smax=p[j];} cout<<“最大”<

void main(){ cout<<“输入个数n”<>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i>a[i];

}

count(a,n);

}

16.字符变成整数

#include #include using namespace std;

int chartoint(const char * pInputStr){

int i=0,d=0,k=0,sum=0;

while(pInputStr[i]!='')

{

d=pInputStr[i]-'0';

sum=sum*10+d;

i++;

}

return sum;

}

void main(){ char

pInputStr[100]={0};cin.get(pInputStr,100);

int transver= chartoint(pInputStr);cout<

}

17.整数变字符

#include using namespace std;

void main(){ int n,i=0;cin>>n;//int m=(int)sqrt(n);char p[50]={0},s[50]={0};while(n){

p[i]=n%10+'0';

i++;

n/=10;} p[i]='';int m=strlen(p);//char *s=(char *)malloc(sizeof(char)*(m+1));

for(int j = 0;j < m;j ++)

s[j]=p[m-1-j];

s[m]='';

cout<

#include #include using namespace std;

void main(){ int n,i=0;cin>>n;//int m=(int)sqrt(n);for(i=2;i

if(n%i==0)

break;

} if(i==n)

cout<<“sushu”<

}

19.1约瑟夫环

#include using namespace std;typedef struct LNode {

int data;

struct LNode*link;}LNode;

void jos(int n,int k,int m){

LNode *p,*curr,*r;

p=(LNode*)malloc(sizeof(LNode));

p->data=1;//注意我是从开始的奥

p->link=p;

curr=p;

for(int i=2;i<=n;i++){

LNode *s=(LNode*)malloc(sizeof(LNode));s->data=i;

s->link=curr->link;curr->link=s;curr=s;}//循环链表的建立

while(--k){ r=p;p=p->link;

}//======================p指向序号为k的位置

int w=m;while(n--){

while(--m)

{r=p;

p=p->link;

}//======================p指向序号为k的之后的m位置上

cout<

data<<“->”;

r->link=p->link;

p=r->link;

m=w;

}

}

void main(){

jos(9,1,5);} //5->1->7->4->3->6->9->2->8-> 19.2约瑟夫环(数学方法只能求出最后的胜利者的序号)

#include int main(){

int n,m,i,s = 0;

printf(“N M =”);

scanf(“%d%d”,&n,&m);

for(i = 2;i <= n;i++)

{

s =(s + m)% i;

}

printf(“n The winner is %dn”,s+1);}

19.3约瑟夫环(容器实现)#include

#include using namespace std;

const int N = 9;

const int M = 5;

const int k = 1;

int main(int argc, char* argv[])

{

vector ring;

for(int i=0;i

ring.push_back(i+1);

vector::iterator iBegin = ring.begin();

vector::iterator iEnd;

while(!ring.empty())

{

iEnd = ring.end();

if(iBegin == iEnd)

iBegin = ring.begin();

for(int i=1;i

{

iBegin++;

if(iBegin >= iEnd)

iBegin = ring.begin();

}

cout<<*iBegin<

iBegin = ring.erase(iBegin);

}

}

20.判断某个整数是回文。即这样的,反过来还是

#include using namespace std;

bool func(int m);void main(){ int m;cout<<“enter a number:”<>m;cout<

int i,n=0;i=m;

while(i)

{

n=n*10+i%10;

i/=10;

}

if(m==n)

return true;

return false;}

21.判断一个字符串是不是回文

#include using namespace std;#include bool is_huiwen(char a[],int length){

const char *src=a;

const char *end;

end=src+length-1;

while(src

{ if(*src==*end)

{ src++;end--;}

else return false;

}

return true;

}

int main(){ int len;

char c[10];

cout<<“enter:”<

cin>>c;

len=strlen(c);

bool h;

h=is_huiwen(c,len);

if(h)cout<<“hui_wen”<

else cout<<“non_hui_wen”<

return 0;}

22.求一个字符串中的最大回文子串

就是从n个字符开始检查是不是回文,知道m个字符符合回文,那么这个就是最大回文

#include using namespace std;#include char * maxhuiwen(char a[],int length,char b[]){ int i=0,j=0,k=0;for(i=length;i>0;i--)//回文的长度

for(j=0;j<=length-i;j++)//这个其实假设的回文开始字符位置

{

for(k=0;j+k

{

if(a[j+k]==a[j+i-1-k])

continue;

else{break;}

}

if(j+k>=j+i-1-k)

{

int n1=i;//长度

int n2=j;//起始位置

cout<

cout<

memcpy(b,a+j,i);

b[i]='';

return b;

}

}

}

void main(){ int len;

char c[50];

cout<<“enter:”<

cin>>c;

len=strlen(c);

char * output={0};output =(char *)malloc(sizeof(char)*(len+1));char *s={0};

s=maxhuiwen(c,len,output);cout<

23.找出^n的数

#include using namespace std;

void func(int a[],int n){

for(int i=0;i

if(0==(a[i]&(a[i]-1)))

cout<

} void main(){ int a[5];for(int i=0;i<5;i++)

cin>>a[i];int n=sizeof(a)/sizeof(int);cout<

24.统计一个数二进制表达中的个数

#include using namespace std;

int func(int a){

int c=0,i=0;while(a){

if((a & 1)==0)

{c++;} /* i++;*/

a=a>>1;

} return c;

} void main(){ int a;

cin>>a;int m=func(a);cout<

25.镜像反转二进制表达式,并输出十进制值#include using namespace std;int func(int a){

int c=0,i=0;int b[32];while(a){

b[i]=(a & 1);

i++;

a=a>>1;

} for(int j=0;j

c=c*2+b[j];

return c;

} void main(){ int a;

cin>>a;int m=func(a);cout<

26.连续字符统计

#include using namespace std;#include #include using namespace std;#include char * maxcommonchar(char a[],int length){ int n=1;char *p=(char *)malloc(sizeof(char)*(length*2));memset(p,0,sizeof(p));//需要初始化

for(int i=0;i

if(a[i]==a[i+1])

{n++;}

else

{

sprintf(p+strlen(p),“%c%d”,a[i],n);

n=1;

}

}

return p;

}

void main(){

char *a=“assddff”;

int n=strlen(a);cout<

} 27.判断一个字符串中()是否配对

#include using namespace std;bool match(char a[],int length);int main(){

char b[100];

int len;

bool m;

cout<<“enter:”<

gets(b);

len=strlen(b);

m=match(b,len);

if(m)cout<<“match”<

else cout<<“nonmatch”<

return 0;}

bool match(char a[],int length){

char *p=a;

int count1=0;

int count2=0;

while(*p!='')

{

if(*p=='(')count1++;

if(*p==')')count2++;

if(count2>count1)

return false;

p++;

}

if(count1==count2)

return true;

else

return false;} 28.查找子字符串个数

#include using namespace std;

int fun(char a[],char b[]){

int n=0;

int n1=strlen(a);int n2=strlen(b);

for(int i=0;i<=n1-n2;i++){if(strncmp(a+i,b,n2)==0){ n++;}

}

return n;}

void main(){

char a[100],b[100];

cin>>a;

cin>>b;

int n=fun(a, b);

cout<

29.1找出一个字符串中是否包含相同(不管是不是连续的)的子字符串

(要求子串长度大于等于)并输出出现频率最高的子字符串

#include using namespace std;void fun(char a[]){

int n=strlen(a);int m=0;char b[100];

int p=0;

int s1[10],s2[10],s3[10];for(int i=2;i<=n/2;i++)for(int j=0;j<=n-i;j++)

{ strncpy(b,a+j,i);

b[i]='';

for(int k=0;k

{ if(strncmp(b,a+j+k,i)==0)

{

m++;

}

} if(m>=2){s1[p]=m;s2[p]=j;s3[p]=i;p++;} m=0;}

int max=0;

int l=0;

for(int q=0;q

if(s1[q]>max)

{ max=s1[q];

l=q;

}

for(int o=0;o

void main(){

char a[100];

cin>>a;

fun(a);/*if(fun(a)){cout<<“you”;} else{cout<<“meiyou”;}*/

}

29.2找出一个字符串中是否包含相同并且连续的子字符串,并输出出现频率最高的子字符串

#include #include using namespace std;void fun(char a[]){

int n=strlen(a);

char *s[100];for(int n3=0;n3<100;n3++){

s[n3]=(char *)malloc(20*sizeof(char));}

for(int n1=0;n1

strcpy(s[n1],a+n1);

/*for(int n2=0;n2

cout<

int c=1;

int max=0;

int m=0;

int p;

for(int i=0;i

for(int j=i+1;j

{ if(strncmp(s[i],s[j],j-i)==0)

{ c++;

for(int k=j+j-i;k

{ if(strncmp(s[i],s[k],j-i)==0)

{

c++;} else{break;}

}

if(c>max)

{ max=c;

m=i;

p=j;

}

}

}

for(int o=0;o

void main(){

char a[100];

cin>>a;

fun(a);/*if(fun(a)){cout<<“you”;} else{cout<<“meiyou”;}*/

}

30.1删除字符窜中字符数最少的字符

#include #include using namespace std;struct node { int count;char a;};char *minWorddelete(char * pInputStr, char * pOutputWord){ int n=strlen(pInputStr);

struct node sb[100]={0};//*sb=(struct node *)malloc(10*sizeof(struct node));

for(int i=0;i

{

sb[i].a=pInputStr[i];

sb[i].count=0;

} for(int k=0;k

for(int l=0;l

{

if(sb[k].a==sb[l].a)

sb[k].count+=1;

}

struct node min;

int dex1=0;

min=sb[0];

int m=0;for(m=0;m

{

if(sb[m].count

{

min=sb[m];

dex1=m;

}

} cout<<“删除的字符是”<

{

if(sb[p].a!=sb[dex1].a)

{

pOutputWord[q]=sb[p].a;

q++;

}

} pOutputWord[q]='';

return pOutputWord;

}

void main(){ char

pInputStr[100]={0};cin.get(pInputStr,100);

char * pOutputWord=(char *)malloc(sizeof(char *)*100);

memset(pOutputWord, 0, sizeof(pOutputWord));char *s=minWorddelete(pInputStr, pOutputWord);cout<

30.2简单的字符统计的,但是效率比较低

#include #include #include using namespace std;void main(){int a[128];memset(a,0,sizeof(a));string s=“gdssdsgs”;int n=s.size();

int i = 0;

for(i = 0;i

int p=s[i];a[p]+=1;} for(int j = 0;j<128;j++){if(a[j]>0)

cout<<(char)j<<“:”<

#include using namespace std;void cycleDisplacement(int *a, int n, int k){

int temp=0;

if(k>0)

{while(k)

{temp=a[n-1];

for(int j=n-1;j>0;j--)//注意右移覆盖要从大的那边开始覆盖,即j--

{a[j]=a[j-1];

}

a[0]=temp;

k--;

}

}

else if(k<0){while(k)

{temp=a[0];

for(int j=0;j

{a[j]=a[j+1];

}

a[n-1]=temp;

k++;

}

}

}

void main(){ int a[]={1,2,3,4,5};int n=5;

cycleDisplacement(a,5,-2);

for(int i=0;i<5;i++)

{

cout<

}

}

32.求一个二维数组每列的最小值

#include using namespace std;void arraymin(int input[][4],int n1,int n2,int output[]){

for(int i=0;i

{

output[i]=input[0][i];

for(int j=0;j

{

if(input[j][i]

output[i]=input[j][i];

}

} } void main(){

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int n1=3;int n2=4;int *output=(int *)malloc(sizeof(int)*n2);arraymin(a,n1,n2,output);cout<<“原二维数组是:”<

for(int i=0;i<3;i++){

for(int j=0;j<4;j++)

{

cout<

}

cout<

cout<<“每列最小值是:”<

for(int k=0;k

cout<

}

33.1两个字符串,求最长公共子串

#include using namespace std;#include char * maxcommonchar(char a[],char b[],char c[]){ int n1=strlen(a);

int n2=strlen(b);int n=(n1>=n2)? n2:n1;//cout<

int i=0,j=0,k=0,l=0;

for(i=n;i>=2;i--)//最大子串长度

for(j=0;j

for(k=0;k

{

if(strncmp(a+j,b+k,i)==0)

{

for(l=0;l

{

c[l]=a[j+l];

}

c[l]='';

// cout<

return c;

}

}

}

void main(){

/*char *a=“fdfdsfdsf”;

char *b=“sdfdf”;*/

char a[100];char b[100];cin>>a;cin>>b;

char

output[100]={0};char *s={0};

s=maxcommonchar(a,b,output);cout<

}

从网上拷过来的程序,如下所示,他的复杂度比我的低。

#include #define M 100

//LCS问题就是求两个字符串最长公共子串的问题 char* LCS(char left[],char right[]){

//获取左子串的长度,获取右子串的长度

int lenLeft=strlen(left),lenRight=strlen(right),k;

//注意这里要写成char型,而不是int型,否则输入整型数据时会产生错误。

//矩阵c纪录两串的匹配情况

//char *c=(char *)malloc(lenRight);char *p;

int c[M][M]={0};//当将c申明为一个二维数组时

int start,end,len,i,j;//start表明最长公共子串的起始点,end表明最长公共子串的终止点

end=len=0;//len表示最长公共子串的长度

for(i=0;i

{

//串从后向前比较,为什么要从后向前呢?是把一维数组c[ ]当二维数组来用,//如果要从前向后,可以将c申明为一个二维数组c[M][M].但程序要做相应调整.for(j=0;j

//for(j=lenRight-1;j>=0;j--)

{

if(left[i] == right[j])//元素相等时

{

if(i==0||j==0)

//c[j]=1;

c[i][j]=1;//这边是是因为若是i,j有一个为,说明是从某一个字符串的开头开始的,这个是公共字符串的起点

else

{

//c[j]=c[j-1]+1;

c[i][j]=c[i-1][j-1]+1;//只有前面的字符也是相等的,这边的计数器才会加一,}

}

else

//c[j] = 0;

c[i][j]=0;

//if(c[j] > len)

if(c[i][j]>len)

{

//len=c[j];

len=c[i][j];

end=j;

}

}

}

start=end-len+1;

//数组p纪录最长公共子串

p =(char*)malloc(len+1);

for(i=start;i<=end;i++)

{

p[i-start] = right[i];

}

p[len]='';

return p;}

void main(){

char str1[M],str2[M];

printf(“请输入字符串:”);

gets(str1);

printf(“请输入字符串:”);

gets(str2);

printf(“最长子串为:”);

printf(“%sn”,LCS(str1,str2));

}

33.2 n个字符串的最大公共子串

需要调用子函数的 #include using namespace std;

char * maxchar(const char * s[],char * p,int n){ int j=0,k=0,l=0,m=0;

for(j=strlen(s[0]);j>0;j--)//最大字符串的长度

for(k=0;k+j-1

for(l=1;l

{int flags2=0;

for(m=0;m+j-1

{

if(strncmp(s[0]+k,s[l]+m,j)==0)

{//cout<<“我是大笨蛋”;

flags2=1;

break;

}

}

if(!flags2)//如果循环到这个地方有某个字符串中没有s[0]中挑出的那个字符串,说明这个字符串不是最大的,将代表最大字符串的标志位设为

{//cout<<“我是大笨蛋”;

flags1=0;

break;

}

}

if(flags1)

{// cout<<“我是大笨蛋”;

strncpy(p,s[0]+k,j);

// p[j]='';

return p;

}

}

}

// void main(){ const char *p1[]={“fsdfsdf”,“gsgssfsd”,“ryrghgjgfsd”};

char *q=(char *)malloc(sizeof(char)*20);memset(q,0,sizeof(q));

cout<

不需要调用子函数的

#include using namespace std;void main(){

const int n=3;char *s[]={“fsdfsdf”,“gsgssfsd”,“ryrghgjgfsd”};

char *p=(char *)malloc(sizeof(char)*20);memset(p,0,sizeof(p));int j=0,k=0,l=0,m=0;for(j=strlen(s[0]);j>0;j--)//最大字符串的长度

for(k=0;k+j-1

{int flags1=1;

for(l=1;l

{int flags2=0;

for(m=0;m+j-1

{

if(strncmp(s[0]+k,s[l]+m,j)==0)

{cout<<“我是大笨蛋”;

flags2=1;

break;

}

}

if(!flags2)//如果循环到这个地方有某个字符串中没有s[0]中挑出的那个字符串,说明这个字符串不是最大的,将代表最大字符串的标志位设为

{//cout<<“我是大笨蛋”;

flags1=0;

break;

}

}

if(flags1)

{// cout<<“我是大笨蛋”;

strncpy(p,s[0]+k,j);

goto L;

}

}

L:cout<

} 34.超大整数加法运算

大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。这边我用的是数组 #include #include using namespace std;#define ln 100 //数字长度

void bigint(char a[],char b[]){

int la = 0, lb = 0;int A[ln]={0};int B[ln]={0};

la =strlen(a);

for(int i=0;i

{

A[i] = int(a[la-1-i])-48;

}

lb =strlen(b);

for(int i=0;i

{

B[i] = int(b[lb-1-i])-48;

}

int n=(la>lb)?la:lb;

for(int i=0;i

{

A[i]=A[i]+B[i];

A[i+1]=A[i+1]+A[i]/10;//将进位加到A对应位shang

A[i]=A[i]%10;//进位后原位只留下个位

}

cout << “相加结果:” << endl;

for(int j=n;j>=0;j--)

{

cout << A[j];

}

cout << endl;} void main(){

char a[ln];

cout << “输入一个高精度数(小于位)作被加数:” << endl;

cin.getline(a, ln);

char b[ln];

cout << “输入另一个高精度数(小于位)作加数:” << endl;

cin.getline(b, ln);

bigint(a,b);

} 35.排序总结

//交换排序1:冒泡法 #include using namespace std;

void BubbleSort(int a[],int length){ int temp=0;

for(int i=0;i

for(int j=0;j

{

if(a[j]>a[j+1])

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

} } //交换排序2: 鸡尾酒排序: 鸡尾酒排序,又被称作双向冒泡排序,是一种从冒泡算法演变成的稳定排序算法,不同于冒泡算法重复的从头到尾比较,鸡尾酒算法交替的从头到尾再从尾到头比较关键字。该算法的性能比标准的冒泡算法稍高。

注意:鸡尾酒算法可以看作是选择算法的一种变体。

void CocktailSort(int *array, int length){ int i;int temp;

int left = 0, right = length;

int finished;

do

{

finished = 1;

--right;

for(i = left;i < right;i++)

{

if(array[i] > array[i+1])

{

temp = array[i];

array[i] = array[i+1];

array[i+1] = temp;

finished = 0;

}

}

if(finished)

{

return;

}

finished = 1;

for(i = right1);

_QuickSort(array, pivot_loc + 1, high);} }

void QuickSort(int *array, int length){ _QuickSort(array, 0, length1;j >= 0 && temp < a[j];j--)//这边之所以从i-1以后--是避免数据被覆盖丢失

{

a[j+1] = a[j];

}

a[j+1] = temp;//在合适位置安放a[i]

} }

//插入排序2: 二分法查找插入排序

如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的树目。该算法可以认为是插入排序的一个变种,称为二分查找排序。折半插入排序所需附加存储空间和直接插入排序相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。

其实就是二分法查找与插入排序的一个结合,在已排好的字符串中用二分法查找出那个最合适的插入位置(找到的一般是比a[i]小的,即将离其最近的一个下标n),插入位置就是n+1 //void BinaryInsertionSort(int *array, int length)//{ // int i, j;// int temp;// int low, high, mid;

第三篇:程序员机试题目

开发环境:VS2010、SQL Server2008

开发语言:C#

使用框架:ASP.NET、ADO.NET

一、使用经典三层架构完成web页面的用户登录,数据库、页面自行设计实现(30分钟)

要求:

(1)提供多个账号可以登录

(2)用户录入错误信息时能够进行提示

(3)能对以后的其他业务功能提供用户身份的验证

二、使用dotNet4.0中的ListView、DataPager控件完成数据库端的分页查询,数据库端自行设计实现(1小时)

要求:

(1)数据表结构可以使用

(一)中的用户信息

(2)分页必须使用数据库端分页

(3)使用的控件必须是ASP.NET 4.0提供的ListView、DataPager

控件

(4)页面只完成数据查询显示即可

(5)可上网查找相关的资料

第四篇:外联部招新笔试题目

江汉大学文理学院

生物与环境工程学部

(请注意在45分钟内完成答题)第五届分团委学生会外联部干事招新笔试

1.谈谈你对外联部的见解。

2.说明你想加入外联部的目的。

3.如果此次招新你被淘汰,试预估自己被淘汰的原因。

4.如果现在让你选择当部长或副部长,你会选择哪个。为什么?

5.“团结、眼光、胆量、口才、坚持”,这五项中你觉得哪项是作为外联部干事的你在和商家谈判时最重要的一项,为什么?

第五篇:学生会招新笔试题目——经典

2010—2011学年第一学期xx大学学生会学生干部

竞聘笔试试卷

(考试时间为120分钟)

一、选择题(作答于答卷纸)

1. 言语理解与表达。世界主要经济发达国家和地区目前已就发展低碳经济达成共识:以经济发展模式由“高碳”向“低碳”转型为(),通过市场机制下的经济手段推动低碳经济的发展,以减缓人类活动对气候的破坏并逐步达到一种互相()的良性发展状态。

依次填入划横线部分最恰当的一项是:

A.目标 协调 B.手段 促进

C.标志 制约 D.契机 适应

2.有人说,凡是知识都是科学的,凡是科学都是无颜色的,并且在追求知识时,应当保持没有颜色的态度。假使这种说法不随意扩大,我也认同。但我们要知道,只要是一个活生生的人,便必然有颜色。对无颜色的知识的追求,必定潜伏着一种有颜色的力量,在后面或底层加以推动。这一推动力量不仅决定一个人追求知识的方向与成果,也决定一个人对知识是否真诚。

这段文字中“有颜色的力量”指的是:

A.研究态度 B.价值取向

C.道德水准 D.兴趣爱好

3.类比推理。每道题先给出一组相关的词,要求你在备选答案中找出一组与之在逻辑关系上最为贴近、相似或匹配的词。

()对于建筑相当于计划对于()

A.设计 成果 B.图纸 工作

C.材料 战略 D.施工 目标

4.事件排序。请你选择其中最合乎逻辑的一种事件顺序。()

1.融入异族自谋出路 2.一支残部向西突围 3.跨过界河向北征战 4.战火熄灭回国通商 5.青年男子被征入伍

A.3-5-2-1-4

B.3-2-1-4-5 C.5-2-3-4-1

D.5-3-2-1-4

深度

风度

宽度

厚度

学院班级____ 姓名___

竞聘部门____ 是否服从分配____

二、论述题(作答于答卷纸)

1、当代著名学者王蒙为温州大学所题校训“求学问是,敢为人先”,你认为应该如何践行到实际的学习生活中,谈谈你的看法。

2、“每一个命题的背后都有一个反命题”,对于这句话说说你的理解。

3、对于“残酷”青春的说法,你是否同意,谈谈你的看法。

4、生活的公式“不怎么___我以为我以后会__但是其实根本不会__”,在你脑海中生活的公式又是什么。

5、“可我不小心查阅了一下舟曲县志,对比了一下舟曲的卫星图,知道古书上记载的舟曲是“陇上小江南”,郁郁葱葱、河水澄明,经过政府率领下的十数年英勇的乱砍滥伐,就成为英勇的光秃秃和硬梆梆,这些光秃秃和硬梆梆造就舟曲英勇的80%的GDP,最终让我们现在英勇地用800%的GDP去拯救。”请你谈下这段话中的两个数字“80%的GDP”和“800%的GDP”的感受。

三、思维拓展题(作答于答卷纸)

1、如果你是一道菜,你觉得你是一道什么菜,为什么?

2、列举一本你最喜欢的刊物,并说明你经常阅读的原因。

四、能力题(作答于答卷纸)

每学年的开学初,温州大学学生会都会进行公开的全校性的学生干部招新。首先感谢你参加本次的招新活动,并恭喜你进入第三轮的笔试。请你谈谈第一次初试与第二次面试中温州大学学生会给你留下的印象,以及你发现的问题和不足。

深度

风度

宽度

厚度

答案:

一、1.、【QZZN答案选D】

契机:机会,转折变化的机缘;适应:适合于;协调:和谐一致,配合得当;制约:甲事物本身的存在和变化以乙事物的存在和变化为条件。促进:推动使向前发展。第一个空格处应为“契机”。

2、【QZZN答案选B】

价值取向指的是一定主体基于自己的价值观在面对或处理各种矛盾、冲突、关系时所持的基本价值立场、价值态度以及所表现出来的基本价值倾向。价值取向具有实践品格,它的突出作用是决定、支配主体的价值选择,因而对主体自身、主体间关系、其它主体均有重大的影响。道德是指衡量行为正当与否的观念标准。一个社会一般有社会公认的道德规范,而道德水准是指道德水平的高低。此题侧重于意识形态,所以还是价值取向最佳。、B 前项与后项是顺承关系,图纸为建筑做准备;计划为工作做准备。

4、.D

深度

风度

宽度

厚度

下载华为校招2013-2016年机试题目-个人整理五篇word格式文档
下载华为校招2013-2016年机试题目-个人整理五篇.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    文艺部招新笔试题目

    文艺部招新笔试题目 1.你怎样理解你的身份?演员还是工作人员? 2.如果你与你的上级发生矛盾,请问你会怎么做? 3.如果让你策划一次迎新晚会,请问你的流程是什么? 4.你认为文艺部该......

    通讯社招新笔试题目二

    化学工程学院·耕耘通讯社 新闻部招新笔试题目 考试时间为两个小时,请大家认真作答,发挥出自己的最佳水平,也希望大家今天能够给自己一份满意的答卷!第一题:新闻写作 1、根据所......

    华为校招问题回答汇总--6.22修订版

    华为校招问题汇总 6月22日 注:有任何问题可以在群内@当日值班管理员。请不要私信管理员,私信一律不回复;同时,没有修改备注的同学无权提问。 一、实习相关 1. 华为今年的暑期实......

    (6.10)2014年华为校招问题回答汇总

    华为校招问题与解答6月10日 1. 希望了解一些软件考试方面的信息 ANS:7月上旬机试 ,大家等艾庆兴的技术专场,会在各高校讲。 (ps.给刚才提到的艾庆兴同学做个简介,外号“艾神”,20......

    2013东软校招笔试题目

    1.学习中遇到的问题如何解决? 2. 遇到规定时间无法完成的任务时如何解决? 3. 线程如何使用?线程的常用方法?wait和sleep的区别? 4. &与&&区别? 5.抽象类与接口的区别? 6.学校本专业......

    2013东软校招笔试题目

    面试问题汇总 1. 简单自我介绍 2. 总结一下自己的优缺点 3. Oracle中建表语法,事务相关特性 4. JDBC过程 5. 在东软实训中心有哪些收获 6. 对东软是否认可......

    华为2013北京软件工程师 上机 机测 编程题目

    华为2013年校招机测题目华为2013年,在北京的软研工程师,需要参加机测,机测通过后,进入面试。 机测时间是30分钟,分批进行。在线提交系统,服务器会编译,给出结果。语言可以选择C,C++,J......

    校礼仪队招新面试题目

    华南师范大学石牌校区第三十四届第一任学生会公关实践部礼仪队2013-2014学年招新面试 1.面试环节分为三个环节:个人面试,个人笔试,分组面试 2.个人面试:时间每个人10分钟左右......