当前位置:文档之家› 华为校招历年机试题目

华为校招历年机试题目

华为历年笔试题目总结因最近要参加华为的招聘,便从网上搜集了一些华为笔试历年题目,现总结献给大家,因本人非软件出生,水平有限,仅供参考,若有误处,请海涵。

1、字符串问题∙问题描述:把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉,输出新字符串。

∙要求实现函数:void my_string(char* input, char* output)【输入】char* input,输入的字符串【输出】char* output,输出的字符串【返回】无∙示例输入:inp ut = “A*(BC&De+_fg/*”输出:output = “ABCDefg”输入:input = “aB+_9”输出:output = “aB9”程序如下:void my_string(char* input, char* output){int i,j;i=j=0;while(*(input+i)!='\0'){if((*(input+i)>='A'&&*(input+i)<='Z')||(*(input+i)>='a'&&*(input+i)<='z')||(*(input+i)>='0'&&*(input+i)<='9')){*(output+j)=*(input+i);j++;}i++;}*(output+j+1)='\0';}题目描述:输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母,若原始大写字母为V~Z, 则转换为对应小写字母的值减21。

其他字符不变,输出转换后的字符串。

例如,对于字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b要求实现函数:void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr);【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例输入:“Axs3mWss”输出:“fxs3mbss”void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr){int i=0;for(i=0;i<lInputLen;i++){if(pInputStr[i]>='A'&&pInputStr[i]<'V')pOutputStr[i]=pInputStr[i]+'a'-'A'+5;else if(pInputStr[i]>='V'&&pInputStr[i]<='Z')pOutputStr[i]=pInputStr[i]+'a'-'A'-21;elsepOutputStr[i]=pInputStr[i];}}3. 单词统计题目描述:输入一段英文文本,用程序统计出现频率最高和最低的两个单词;英文文本中仅出现这四类字符:空格( )、英文逗号(,)、英文句号(.)、英文大小写字母(a-z、A-Z)单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);仅大小写不同的单词算同一个单词;如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。

返回的单词统一用小写字母返回例如:输入字符串“Hello world, i said hello world to the world”,返回“world”,“i”输入字符串“Somebody like somebody,i do not like it”,返回“somebody”,“i”要求实现函数:void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord);【输入】pInputStr:输入字符串,指向一段英文文本【输出】pOutputHotWord:输出字符串,返回出现次数最多的单词,该指针所指存储空间已经分配好,且足够大pOutputColdWord:输出字符串,返回出现次数最少的单词,该指针所指存储空间已经分配好,且足够大【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例输入:“Hello world, i said hello world to the world”void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord){//分割输入字符串Hello world, i said hello world to the worldstruct eng_t chaifen[20];int i=0,j=0,k=0;while (pInputStr[i]!='\0'){while((pInputStr[i]!='')&&(pInputStr[i]!=',')&&(pInputStr[i]!='.')&&(pInputStr[i]!='\0')){if(pInputStr[i]>='a'&&pInputStr[i]<='z')chaifen[j].word[k]=pInputStr[i];elsechaifen[j].word[k]=pInputStr[i]+'a'-'A';i++;k++;}if(k>0){chaifen[j].word[k]='\0';j++;}k=0;i++;}//统计重复次数并存入num中k=0;int a=0;for(i=0;i<j;i++){for(k=0;k<=j;k++){if(strcmp(chaifen[i].word,chaifen[k].word)==0)a++;}chaifen[i].num=a;a=0;}//查找最大值int temp1=0,temp2=0;for(i=0;i<j;i++){if(chaifen[i].num>temp1){temp1=chaifen[i].num;temp2=i;}}strcpy(pOutputHotWord,chaifen[temp2].word);//查找最小值temp1=chaifen[0].num;for(i=0;i<j;i++){if(chaifen[i].num<temp1){temp1=chaifen[i].num;temp2=i;}}strcpy(pOutputColdWord,chaifen[temp2].word);}/*手机号码合法性判断(20分)问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。

特点如下:1、长度13位;2、以86的国家码打头;3、手机号码的每一位都是数字。

请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求:1)如果手机号码合法,返回0;2)如果手机号码长度不合法,返回13)如果手机号码中包含非数字的字符,返回2;4)如果手机号码不是以86打头的,返回3;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。

也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

要求实现函数:int s int verifyMsisdn(char* inMsisdn)【输入】char* inMsisdn,表示输入的手机号码字符串。

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

示例输入:inMsisdn = “869123456789“输出:无返回:1输入:inMsisdn = “88139123456789“输出:无返回:3输入:inMsisdn = “86139123456789“输出:无返回:*/#include <iostream>using namespace std;int verifyMsisdn(char* inMsisdn){int i=0;while(*(inMsisdn+i)!='\0')i++;if(i!=14)return 1;for(i=0;i<13;i++){if(*(inMsisdn+i)>'9'||*(inMsisdn+i)<'0')return 2;}if(*(inMsisdn)!='8'||*(inMsisdn+1)!='6')return 3;return 0;}/*2. 将一个字符串的元音字母复制到另一个字符串,并排序(30分)问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。

说明:1、元音字母是a,e,i,o,u,A,E,I,O,U。

2、筛选出来的元音字母,不需要剔重;最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。

要求实现函数:void sortV owel (char* input, char* output);【输入】char* input,表示输入的字符串【输出】char* output,排好序之后的元音字符串。

【返回】无示例输入:char *input = “Abort!May Be Some Errors In Out System. “输出:char *output =“aeeeooAEIO “*/#include<iostream>using namespace std;void sortVowel (char* input, char* output){int i=0,j=0,k=0;int numlong;char temp;while(* (input+i)!='\0'){if(*(input+i)=='a'||*(input+i)=='e'||*(input+i)=='i'||*(input+i)=='o'||*(input+i)=='u'||*(input+i)=='A'||*(input+i)=='E'||*(input+i)=='I'||*(input+i)=='O'||*(input+i)=='U')*(output+j++)=*(input+i);i++;}numlong=j;for(i=1;i<j;i++){for(k=0;k<j-i;k++){if(*(output+k)>*(output+k+1)){temp=*(output+k);*(output+k)=*(output+k+1);*(output+k+1)=temp;}}}for(i=0,k=0;i<j;i++){if(*(output+k)>='A'&&*(output+k)<='Z')k++;}for(i=0;i<k;i++)*(output+numlong+i)= *(output+i);for(i=0;i<numlong;i++)*(output+i)=*(output+i+k);*(output+numlong+1)='\0';}/*问题描述:把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉,输出新字符串。

相关主题