华为机试题目总结(程序篇)(合集5篇) 时间:2019-05-13 18:10:21 收藏本文下载本文作者:会员上传 简介:写写帮文库小编为你整理了多篇相关的《华为机试题目总结(程序篇)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《华为机试题目总结(程序篇)》。 第一篇:华为机试题目总结(程序篇) 自己写的,水平很挫,仅供参考目录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_numelse cout<<“Deutschn”;}2.销售网络问题(未完成)#include using namespace std;void main(){int n,S_num=0;cin>>n;int a[n];for(int i=0;icin>>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_numelse 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;icin>>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;kif(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;mif(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;icin>>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;ifor(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;iprintf(“%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;isb[i].number=i;sb[i].value=task[i];}struct table temp;for(int k=0;kfor(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;lif(sb[l].value<50){system_task[cs]=sb[l].number;cs++;}else if(sb[l].value<=255){user_task[cu]=sb[l].number;cu++;}elsecontinue;} 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++;elsecontinue;}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;ifree(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++;longlInputLen=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<