华为机考题
- 格式:doc
- 大小:66.00 KB
- 文档页数:9
华为笔试真题及答案1、华为公司的全称为()A、深圳市华为技术有限公司B、华为技术有限公司C、华为公司D、我司(答案:B,答A、C者酌情给分,答D者马上辞退,我司三令五申制止使用该华为内部土语,屡禁不止,老员工不行教也,只好从新员工抓起,格杀勿论)2、华为公司的企业性质是()A、民营B、私营C、国营D、上市公司(答案:A,此题主要让考生了解公司的性质)3、华为公司的商标象征()A、红太阳B、菊花C、扇贝(答案:B,答A者酌情给分,答C者马上辞退,每天就想着吃)4、从以下选项中选择出公司的常务副总裁()A、任正非B、孙亚芳C、李一男D、郑宝用E、张燕燕(答案:BD,答C者马上辞退,让他到李一男的公司去报到吧)5、华为公司的年终奖一般是在每年的什么时候发()A、元旦后B、春节前C、7月下旬或8月上旬D、劳动节前E、国庆节前(答案:C,切记,由于是年中奖,而不是年终奖)6、华为公司的配给你的”股票是()A、**发的B、用自己的奖金去买(答案:B)7、老板常说的土八路,是指()A、老板自己的革命年月的光芒历史B、本地化的用服兄弟C、季度考核为D的兄弟(答案:B)2023华为笔试真题及答案二1. 找错void test1(){char string[10];char* str1=0123456789;strcpy(string, str1);}答:外表上并且编译都不会错误。
但假如string数组原意表示的是字符串的话,那这个赋值就没有到达意图。
最好定义为char string[11],这样最终一个元素可以存储字符串结尾符\0;void test2(){char string[10], str1[10];for(int I=0; I10;I++){str1[I] =a;}strcpy(string, str1);}答:strcpy使用错误,strcpy只有遇到字符串末尾的\0才会完毕,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]=\0,这样就正常了。
华为机考题目及答案1.删除字符串中所有给定的子串(40分)问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数:int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】:str(输入的被操作字符串)、sub_str(需要查找并删除的特定子字符串)【输出】:result_str(在str字符串中删除所有sub_str子字符串后的结果)【返回】:删除的子字符串的个数注:I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。
比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。
如果匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。
II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。
示例输入:str = "abcde123abcd123"sub_str = "123"输出:result_str = "abcdeabcd"返回:2输入:str = "abcde123abcd123"sub_str = "1234"输出:result_str = "abcde123abcd123"返回:0我的答案:#include#includeint delete_sub_str(const char *str, const char *sub_str, char *result_str);int main(int argc, char *argv[]){char *st = "12fuck345fuck678fuck9";char *sub = "fuck3";char res[50] ="";int count = delete_sub_str(st, sub, res);printf("子字符串的个数是:%d\n", count);printf("删除子字符串后:\n%s\n", res);return 0;}int delete_sub_str(const char *str, const char *sub_str, char *result_str){int num = 0;int i = 0;int j = 0;int k = 0;int index = 0;for(i = 0; str[i] != '\0'; i++){index = i;j = 0;while(str[i] != '\0' && sub_str[j] != '\0' && str[i] == sub_str[j]) {i++;j++;}if(sub_str[j] != '\0'){i = index;result_str[k] = str[i];k++;}else{num++;i--;}}return num;}2.大数加减问题描述:在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。
1,判断电话号码是否合法://要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。
不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符int fun(char num[]){ char *p=num;int n=strlen(num);if(n==13){if(*p=='8'&&*(p+1)=='6')while(*p!='\0'){if(*p>='0'&&*p<='9')p++;elsereturn 2;if(*p=='\0')return 0;}else return 3;}elsereturn 1;}int main(){char num[]="87139a3887671";int k=fun(num);cout<<k<<endl;return 0;}2 数组比较(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[])•示例1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:02)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6 函数返回:3函数如下:using namespace std;int f(int len1,int arry1[],int len2,int arry2[]){ int k=0;for(int i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--)if(arry1[i]!=arry2[j])k++;return k;}int main(){int num1[]={1,3,5};int num2[]={77,21,1,3,5};int k=f(3,num1,5,num2);cout<<k<<endl;return 0;}3. 约瑟夫问题•问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。
华为手机笔试题目及答案一、单选题(每题2分,共10分)1. 华为手机的操作系统是基于哪个操作系统开发的?A. AndroidB. iOSC. Windows PhoneD. Symbian答案:A2. 华为手机的EMUI系统是哪个版本开始支持多窗口功能的?A. EMUI 9.0B. EMUI 10.0C. EMUI 11.0D. EMUI 12.0答案:B3. 华为手机的“超级快充”技术,其充电功率最高可达多少瓦?A. 40WB. 50WC. 66WD. 100W答案:C4. 华为手机的“智慧分屏”功能允许用户同时打开多少个应用?A. 2个B. 3个C. 4个D. 5个答案:A5. 华为手机的“一碰传”功能是通过哪种技术实现的?A. NFCB. BluetoothC. Wi-FiD. USB答案:A二、多选题(每题3分,共15分)1. 下列哪些是华为手机支持的5G网络频段?A. n41B. n78C. n79D. n1答案:A, B, C, D2. 华为手机的“智慧识屏”功能可以识别以下哪些内容?A. 文字B. 图片C. 二维码D. 语音答案:A, B, C3. 华为手机的“智慧分屏”功能支持以下哪些操作?A. 拖动分屏B. 调整分屏比例C. 切换应用D. 关闭分屏答案:A, B, C, D4. 华为手机的“超级快充”技术包括以下哪些特性?A. 快速充电B. 低温充电C. 智能充电D. 安全充电答案:A, B, C, D5. 华为手机的“一碰传”功能支持以下哪些设备?A. 华为笔记本B. 华为平板C. 华为智能电视D. 华为智能手表答案:A, B, C三、判断题(每题1分,共5分)1. 华为手机的EMUI系统是基于iOS开发的。
(错误)2. 华为手机的“智慧分屏”功能允许用户同时打开5个应用。
(错误)3. 华为手机的“超级快充”技术充电功率最高可达100W。
(错误)4. 华为手机的“智慧识屏”功能可以识别语音。
自己写的,水平很挫,仅供参考目录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<iostream>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<n;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<T_num) cout<<"English\n";else cout<<"Deutsch\n";}2.销售网络问题(未完成) #include<iostream>using namespace std;void main(){int n,S_num=0;cin>>n;int a[n];for(int i=0;i<n-1;i++)cin>>a[i];if(a[])for(int i=0;i<n;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<T_num) cout<<"English\n";else cout<<"Deutsch\n";}3.股票投资问题#include<iostream>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<B;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]<a[m]){ max=b[k][l];m=k;n=l;}}}if (max==0){cout<<"IMPOSSIBLE"<<endl;}else{C=m+1;D=n+1;E=max;cout<<C<<" "<<D<<" "<<E<<endl;}4.判断手机号码合法性#include<iostream>using namespace std;int verifyMsisdn(char* inMsisdn){int n=0;int i=0;int j=0;char *p;p=inMsisdn;while(p[i]!='\0'){ i++;n++;}if(n!=13)return 1;else{while(p[j]!='\0'){if(!((p[j]>='0' && p[j]<='9'))){return 2;break;}j++;}if(!(p[0]=='8'&& p[1]=='6'))return 3;else return 0;}}{char a[20];cin>>a;int m=verifyMsisdn(a);cout<<m;}5.元音字母复制#include<iostream>using namespace std;void sortVowel (char* input){ int j=0;char output[50]={0};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++;}}int w=j;char temp;for(int k=0;k<j-1;k++)for(int l=0;l<j-1-k;l++){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];}}char temp2;for(int m=w;m<j-1;m++)for(int n=w;n<j-1-m;n++){if(output[n]>output[n+1]){temp2=output[n];output[n]=output[n+1];output[n+1]=temp2;}}cout<<output;}void main(){char a[50];cin.get(a,50);sortVowel(a);}6.验证身份证号#include<iostream>using namespace std;int verifyIDCard(char* input) {int n=0;int i=0;int j=0;p=input;while(p[i]!='\0'){ 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<<m;}}7.选秀节目打分#include<iostream>using namespace std;#define N 5int 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<cn;i++){ if(judge_type[i]=1){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<N;i++){ cout<<"输入第"<<i+1<<"个评委的类别"<<endl;cin>>judge_type[i];cout<<"输入第"<<i+1<<"个评委的分数"<<endl;cin>>score[i];}int totalscore= total(score,judge_type,N);cout<<totalscore<<endl;}8.数组最大值放中间,其他依次放其左右(规律未找着,未完成)#include<iostream>using namespace std;void sort(int input[], int n, int output[]){int i,j;int temp =0;for(i =0; i<n-1; i++)for(j =0; j<n-i-1; 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<n/2; i++){output[i] = input[2*i];}for(i =0; i<n/2; 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<n; 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<iostream>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<n; i++){ sb[i].number=i;sb[i].value=task[i];}struct table temp;for(int k=0; k<n-1; k++)for(int j=0; j<n-1-k; 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<n; 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++;}elsecontinue;}system_task[cs]=-1;user_task[cu]=-1;free(sb);for(int m=0;m<=cs;m++){cout<<system_task[m];}printf("\n");for(int n=0;n<=cu;n++){cout<<user_task[n];}}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%d\n", count_sys,count_user);// for(int i=0;i<count_sys+1;i++)// {// printf("%d", system_task[i]);// printf("\n");//// for(int i=0;i<count_user+1;i++)// {// printf("%d", user_task[i]);// }free(system_task);free(user_task);}10.将某字符变成小写后的某个字符#include<iostream>using namespace std;void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr) {for(int i=0;i<lInputLen;i++){if(pInputStr[i]>='V'&& pInputStr[i]<='Z')pOutputStr[i]=pInputStr[i]+11;//('a' - 'A')-('V' - 'A');else if (pInputStr[i]>='A'&& pInputStr[i]<='U')pOutputStr[i]=pInputStr[i]+37;//('a' - 'A')+('F' - 'A');else{pOutputStr[i]=pInputStr[i];}}cout<<pOutputStr;}void main(){char *pInputStr="Axs3mWss";int n=0;while(pInputStr[n]!='\0')n++;long lInputLen=n+1;char *pOutputStr=(char *)malloc(sizeof(char)*(n+1));TransferString(pInputStr,lInputLen,pOutputStr);}11.链表的逆序#include<iostream>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<<p1->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<<p->value<<"->";// p=p->next;//// }}12.单词统计#include<iostream>#include<string>using namespace std;struct node{//int number;int count;char a[10];};void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord) {//cout<<sizeof(pOutputHotWord)<<endl;int i=0;char *pInputStr1=(char *)malloc(100*sizeof(char));strcpy(pInputStr1,pInputStr);//(char *)while(pInputStr1[i]!='\0'){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<j;m++){if(sb[m].count>max.count){ max=sb[m];dex1=m;}else if((sb[m].count<min.count) &&(sb[m].count!=min.count) ) {min=sb[m];dex2=m;}}/*for(int m=0;m<j;m++){cout<<sb[m].count<<endl;cout<<sb[m].a;}*/strcpy(pOutputHotWord,sb[dex1].a);strcpy(pOutputColdWord,sb[dex2].a);cout<<"最高"<<pOutputHotWord;cout<<"最低"<<pOutputColdWord;}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<iostream>#include<string>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]!='\0'){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<<transver;}14.一个数组中比平均数大的个数#include<iostream>#include<string>using namespace std;int count(int p[], int n){int sum=0,m=0;for(int i=0;i<n;i++){sum+=p[i];}int aver=sum/n;for(int j=0;j<n;j++){if(p[j]>aver)m++;}return m;}void main(){cout<<"输入个数n"<<endl;int n;cin>>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++){cin>>a[i];int m=count(a,n);cout<<m;}15. 求一个数组中第一大和第二大数#include<iostream>#include<string>using namespace std;void count(int p[], int n){int max=0,smax=0,k=0;for(int i=0;i<n;i++){if(p[i]>max){ max=p[i];k=i;}}for(int j=0;j<n ;j++){if(j==k)continue;if(p[j]>smax)smax=p[j];}cout<<"最大"<<max<<endl;cout<<"二大"<<smax<<endl;}void main(){cout<<"输入个数n"<<endl;int n;cin>>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++)cin>>a[i];}count(a,n);}16.字符变成整数#include<iostream>#include<string>using namespace std;int chartoint(const char * pInputStr) {int i=0,d=0,k=0,sum=0;while (pInputStr[i]!='\0'){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<<transver+1;}17.整数变字符#include<iostream>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]='\0';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]='\0';cout<<s;}18.判断素数问题#include<iostream>#include<math.h>using namespace std;void main(){int n,i=0;cin>>n;//int m=(int)sqrt(n);for(i=2;i<n;i++){if(n%i==0)break;}if(i==n)cout<<"sushu"<<endl;else{cout<<"bushisushu"<<endl;}}19.1约瑟夫环#include<iostream>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<<p->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<stdio.h>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<vector>#include<iostream>using namespace std;const int N = 9;const int M = 5;const int k = 1;int main(int argc, char* argv[]){vector<int> ring;for(int i=0; i<N;i++)ring.push_back(i+1);vector<int>::iterator iBegin = ring.begin();vector<int>::iterator iEnd;while ( !ring.empty() ){iEnd = ring.end();if(iBegin == iEnd )iBegin = ring.begin();for(int i=1;i<M;i++){iBegin++;if(iBegin >= iEnd)iBegin = ring.begin();}cout<<*iBegin<<endl;iBegin = ring.erase(iBegin);}}20.判断某个整数是回文。
华为机试题目字符串通配查找描述: 请用程序实现带有通配符(?与*)的字符串匹配功能。
代表单个字符,*代表任意个(0或多个)字符运行时间限制: 无限制内存限制: 无限制输入: 带有通配符的模式串和目标串,长度均不超过20。
模式串在前,目标串在后。
输出: 输出第一个匹配位置的下标值(字符串起始开始就匹配上的值为0),若没有匹配的位置则输出-1样例输入: ?^_^*abc^_^abc样例输出: 2答案提示: 2/** 封装PPP数据包描述: 计算机通信中会使用多种协议,TCP/IP协议族是最常见的一组,其中有一个链路层协议叫PPP协议,也称点到点协议,比如家庭使用的ADSL拨号链路层使用的就是PPP协议,底层使用是以太网协议,也称PPPOE。
PPP协议也规定了自己的组包方式,也就是上层协议的数据,抵达PPP层时,会再次添加包头和包尾,继而传输到更底层的协议。
下面介绍下PPP协议打包的基本规则,根据该规则,按照要求读取原始数据,组包成PPP规定的新数据。
PPP数据包格式简介:-------------------------------------------------------------|标志 | 地址 | 控制 | 协议 | 信息 | CRC校验 | 标志|------------------------------------------------------------1字节 1字节 1字节 2字节 N字节 2字节 1字节标志:PPP包的开头和结尾,1字节长度,固定为0x7e地址:1字节,固定为0xff控制:1字节,固定为0x03协议:2字节,本题目有3组值:0xc021(LCP) , 0xc023(PAP), 0x8021(IPCP)信息:字节数不定,为上层协议的数据CRC校验:2字节,本题目中不进行计算,默认填充为0xffff由于标志字符的值是0x7e,因此当该字符出现在信息字段中时,PPP需要对它进行转义。
华为机试题及答案1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。
请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
测试:输入:“abc def gh i d”输出:“abc,def,gh,i,d,”#include<stdio.h>#include<string.h>void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr){int i=0,j=0;int flag=0;while(pInputStr[i]==' '){i++;}for(;i<lInputLen;i++){if(pInputStr[i]==' '){flag=1;continue;}if(flag==1){flag=0;pOutputStr[j++]=',';}pOutputStr[j++]=pInputStr[i];}pOutputStr[j++]=',';pOutputStr[j]='\0';}int main(){char test[40];char re[40];gets(test);DivideString(test, strlen(test), re);printf("%s",re);return 0;}2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。
例如:aa 转换为bc,zz 转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
测试:输入:char*input="abbbcd" 输出:char*output="bcdcde"#include<stdio.h>#include<string.h>void convert(char *input,char* output){int i;for(i=0;i<strlen(input);i++){if(i==0){output[i]=input[i]+1;if(output[i]==123){output[i]=97;}}else{if(input[i]!=input[i-1]){output[i]=input[i]+1;if(output[i]==123){output[i]=97;}}else{output[i]=input[i]+2;if(output[i]==123){output[i]=97;}if(output[i]==124){output[i]=98;}}}}output[i+1]='\0';}int main(){char in[20]={"asdfzzxzxz"};char on[20];//gets(in);convert(in,on);printf("%s",on);return 0;}3、通过键盘输入一串小写字母(a~z)组成的字符串。
华为硬件机试题目〔2023 版本〕1.(推断题)DRAM 上电时存储单元的内容是全0,而Flash 上电时存储单元的内容是全1。
(4分)A.正确B.错误2.(推断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。
(4 分)A.正确B.错误3.(推断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。
(4 分)A.正确B.错误4.(推断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。
(4分)A.正确B.错误5.(推断题)1 的8 位二进制补码是0000_0001,-1 的8 位二进制补码是1111_1111。
(4 分)A.正确B.错误6.(推断题)洗衣机,电冰箱等家用电器都使用三孔插座,是由于假设不接地,家用电器是不能工作的。
(4 分)A.正确B.错误7.(推断题)十进制数据0x5a 与0xa5 的同或运算结果为:0x00。
(4 分)A.正确B.错误8.(推断题)硅二极管的正向导通压降比锗二极管的大(4 分) A.正确B.错误9.(单项选择题)一空气平行板电容器,两级间距为d,充电后板间电压为u。
然后将电源断开,在平板间平行插入一厚度为d/3 的金属板。
此时电容器原板间电压变为(4 分)A.U/3B.2U/3C.3U/4D.不变10.(单项选择题)8086CPU 内部包括哪些单元(4 分)A.ALU,EUB.ALU,BIUC.EU,BIUD.ALU,EU,BIU11.(单项选择题)为了避开50Hz 的电网电压干扰放大器,应当用那种滤波器:(4 分)A.带阻滤波器B.带通滤波器C.低通滤波器D.高通滤波器12.(单项选择题)关于SRAM 和DRAM,下面说话正确的选项是:(4 分) A.SRAM 需要定时刷,否则数据会丧失B.DRAM 使用内部电容来保存信息C.SRAM 的集成度高于DRAMD.只要不掉点,DRAM 内的数据不会丧失13.(单项选择题)在RS232 串口中,承受哪一种校验方式:(4 分) A.CRC 校验B.海明码校验C.多种校验方式的组合D.奇偶校验14.(单项选择题)对于D 触发器来说,为了保证牢靠的采样,数据必需在时钟信号的上升沿到来之前连续稳定一段时间,这个时间称为:(4 分)A.保持时间B.恢复时间C.稳定时间D.建立时间15.(单项选择题)本征半导体中参与〔〕元素可形成N 型半导体(4分) A.五价B.四价C.三价D.二价16.(单项选择题)模拟信号数字化的过程是(4分) A.采样->量化->编码B.采样->编码->量化C.编码->采样->量化D.量化->编码->采样17.(单项选择题)在Buck 电路中,不能起到减小纹波作用的措施是(4分) A.承受多项并联的模式B.开关管内置,提高电源的开关频率C.输出滤波电容由陶瓷电容改为容量电解电容D.增大输出滤波电感量18.(单项选择题)图示电路中a、b 端的等效电阻Rab 在开关K 翻开与闭合时分别为:(4 分)A.10Ω,8ΩB.8Ω,10ΩC.10Ω,10ΩD.10Ω,16Ω19.(单项选择题)关于PCI 总线的描述,错误的选项是:(4 分) A.PCI 总线是一个16 位宽的总线B.PCI 的地址线与数据线是复用的C.PCI 是一种独立于处理器的总线标准,可以支持多种处理器D.PCI 支持即插即用功能20.(单项选择题)中继器、以太网交换机、路由器分别工作在OSI 模型的哪位层次上:(4分) A.物理层、链路层、网络层B.物理层、网络层、链路层C.物理层、链路层、传输层D.链路层、链路层、网络层21.(单项选择题)某电路,对100KHz 以下低频信号干扰敏感,为削减干扰,应承受〔〕滤波器。
1、选秀节目打分,分为专家评委和大众评委,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<iostream>int cal_score(int score[], int judge_type[], int n){int i =0;int sum1=0, sum2=0;int count1=0,count2=0;int zhongfen=0;for(i =0; i<n; i++){if(1==judge_type[i]){sum1+=score[i];count1++;}else //if(2==judge_type[i]){sum2+=score[i];count2++;}}if(count2==0){zhongfen = sum1;}else{zhongfen = int ((sum1/count1)*0.6 +(sum2/count2)*0.4);}return zhongfen;}int main(){int score[]={1,1,1,1,1,1};int judge_type[] = {2,2,2,1,2,2};printf("%d", cal_score(score, judge_type, 6) );} 2、给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
华为机试题华为机试题是指华为公司对应聘者进行岗位技术考核的一种方式。
以下是一道可能出现在华为机试题中的具体题目,供参考:题目:实现一个函数,功能为统计一个字符串中每个字符出现的次数,并返回一个按照字符出现次数从大到小排序的字符及其出现次数的列表。
要求:输入的字符串只包含大小写字母和数字,输出的列表格式为[(字符1, 出现次数1), (字符2, 出现次数2), ...]。
例如:输入:'asdfasdfsdf9879aA'输出:[('s', 4), ('d', 3), ('a', 3), ('f', 3), ('9', 2), ('8', 2), ('7', 1)]解题思路:首先创建一个空字典,用于存储每个字符和其出现次数。
然后遍历整个字符串,对于每个字符,判断字符是否已经存在于字典中。
如果存在,则将对应字符的出现次数加1;如果不存在,则将字符加入字典,并将其出现次数初始化为1。
最后,将字典中的键值对按照值从大到小排序,并转换为所需的列表格式返回。
实现代码(Python):```pythondef count_characters(s):# 创建空字典char_count = {}# 统计字符出现次数for char in s:if char in char_count:char_count[char] += 1else:char_count[char] = 1# 将字典按值从大到小排序,并转换为列表result = sorted(char_count.items(), key=lambda x: x[1], reverse=True)return result```注意:这只是一种可能的解题思路和实现方式,可能还有其他的方法可以解决这个问题。
在机试过程中,考察的重点不仅仅是结果的正确性,还包括代码的规范性、性能等方面的评价。
【关键字】试题一、华为机试——2018年校招10号参加的华为的机试,这次的3道题难度适中。
第一题字符串,第二题贪心算法(会不会?),dp可以解,第三题长整数相乘。
因为题主做过第三题原题,刚开始就把第三题秒了~~然后开始做第一题,一般10分钟就可以搞定。
第二题要想一下,不过也差不多是原题,Le etcode上第55题jump game应该是此题原型。
因为都刷过几乎是原题的原故,一个小时不到3题就AC完了下面是完整题目和代码题目一、给你一个原始字符串,根据该字符串内每个字符出现的次数,按照ASCII码递增顺序重新调整输出。
举例!假设原始字符串为eeefgghhh则每种字符出现的次数分别是1.eee 3次2.f 1次3.gg 1次4.hhh 3次重新排序后输出的字符串如下:efghegheh编写程序,实现上述功能。
【温馨提示】1.原始字符串中仅可能出现“数字”和“字母”;2.请注意区分字母大小写。
1.#include <iostream>2.#include <map>3.#include <vector>4.#include <algorithm>ing namespace std;6.int main(){7. string str;8. int a[128]={0};9. while (cin >> str){10. for(int i=0;i<str.length();i++){11. a[str[i]]++;12. } //caculate the number of each character13. int max = *max_element(a, a+128);14. sort(str.begin(),str.end());15. long i =unique(str.begin(), str.end()) - str.begin();//the location of the "maxium number" character16. str=str.substr(0,i);17. for(int j=0;j<max;j++)18. for(int i=0;i<str.length();i++){19. if(a[str[i]]){20. cout<<str[i];21. a[str[i]]--;22. }23. }24. cout <<endl;25. }26. return 0;27.}题目2、给出一组正整数,你从第一个数向最后一个数方向跳跃,每次至少跳跃1格,每个数字的值表示你这个位置可以跳跃的最大长度。
华为海思机考题库1.foo-(1<a)foo-1<a的结果一致A.正确B.错误2.在verilog HDL描述语言中,模块内使用parameter和define定义的参数,其作用范围均局限于模块内部。
A.正确B.错误3.在Verilog代码中,对有符号数进行比特选择或拼接,其结果是无符号数A.正确B.错误4. input clk;input rst_n;wire [1:0] cnt_out;always@(posedge clk or negedge rst_n)beginIf(rst_n==1'b0)begincnt<=3'd0;endelse begincnt <=cnt+3'd1;endendassign cnt_out={2{cnt[2]}}^cnt[1:0];cnt_out这个计数器按照什么规律变化?A.按照0、0、0、0、0、1、2、3、0、0、0、0、……这样的规律计数B.始终按照0、1、2、3、0、1、2、3、……这样的规律技术C.按照0、0、0、0、3、3、3、3、0、0、0、0、……这样的规律计数D.按照0、1、2、3、3、2、1、0、0、1、2、3、……这样的规律计数5.下面哪项不属于功能类测试点分解的思路是?A.芯片接口时序的组合B.功能对应输入的范围,考虑边界值,等价类等C.功能对应的行为特性D.考虑时间上序列关系的影响[不定项选择4分]6.下列行为描述语句可综合的是:()A. assign赋值语句B. if else条件语句C. always过程语句D. for循环语句7. Formality是由Synopsys公司开发的一种形式验证(Formal Verification)工具,用于两个Design之间的等价性验证。
它可以支持如下哪些等价性验证?A. RTL级对RTL级B. RTL级对门级网表C.门级网表对门级网表8.①: always @(posedge clk or negedge rst_n)beginif (!rst_n)din_dly<='h0;eise din_dly<=din;end②: always @(posedge clk) begindin_dly<=din;end③: always @(posedge clk) beginIf (!rst_n)din_dly<='h0;else din_dly<=din;end上面三段代码,说法正确的是:A.②属于无复位寄存器,其PPA更优B.③属于同步复位逻辑,rst_n可能通过组合逻辑连接到寄存器D端。
华为考试题库及答案1. 华为公司是在哪一年成立的?A. 1987年B. 1997年C. 2007年D. 2017年答案:A2. 华为的核心价值观是什么?A. 客户至上B. 创新驱动C. 诚信经营D. 以上都是答案:D3. 华为的全球研发中心主要分布在哪些国家?A. 中国、美国、德国B. 中国、印度、俄罗斯C. 中国、法国、英国D. 中国、加拿大、澳大利亚答案:A4. 华为的5G技术在全球范围内的推广情况如何?A. 领先全球B. 落后于竞争对手C. 与竞争对手持平D. 尚未推广答案:A5. 华为的智能手机品牌是什么?A. 荣耀B. 华为C. 华为P系列D. 华为Mate系列答案:B6. 华为在云计算领域有哪些主要产品和服务?A. 华为云服务B. 华为云数据中心C. 华为云存储D. 以上都是答案:D7. 华为的物联网解决方案主要应用于哪些领域?A. 智能家居B. 智慧城市C. 工业自动化D. 以上都是答案:D8. 华为在人工智能领域的研究方向包括哪些?A. 机器学习B. 深度学习C. 自然语言处理D. 以上都是答案:D9. 华为的全球供应链管理策略是什么?A. 多元化供应商B. 本地化生产C. 长期合作伙伴关系D. 以上都是答案:D10. 华为在可持续发展方面有哪些举措?A. 绿色生产B. 节能减排C. 社会责任项目D. 以上都是答案:D结束语:以上是华为考试题库及答案的一部分,涵盖了华为的成立时间、核心价值观、研发中心分布、5G技术、智能手机品牌、云计算、物联网解决方案、人工智能、供应链管理以及可持续发展等多个方面。
通过这些题目,可以对华为的基本情况有一个全面的了解。
华为OD机试真题1-10(JavaScript)本文档的题目都是真题(非练习题),考到原题的概率很大,通过的几率也很大。
1.I PV4地址转换成整数存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数,例如:128#0#255#255,转换为32位整数的结果为2147549183(0x8000FFFF),1#0#0#0,转换为32位整数的结果为16777216(0x01000000),现以字符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1~128,即每一节范围分别为(1~128)#(0~255)#(0~255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。
如果是非法IPv4,返回invalid IP示例:输入100#101#1#5输出1684340997输入1#2#3输出invalid IP代码:let strings = readLine().split("#");//let strings = "100#101#1#5".split("#");let len = strings.length;let count = 0;let isF = true;if(len==4){for(let i=0;i<len;i++){let n = Number(strings[i]);if(i==0 && (n<1 || n>128)){ //第一节1~128isF = false;break;}else if(n<0 || n>255){ //二、三、四节0~255isF = false;break;}/*** 首先使用把IP地址分成4个数字:128 199 231 44** 把每个数字转换为2进制,如果转换后这个数字对应的二进制数不够8位,在左侧补0:10000000 11000111 11100111 00101100*/count += n<<(8*(3-i));}}else {isF = false;}if(isF){console.log(count);}else {console.log("invalid IP");}2.素数之积给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
各难度上机考试样题初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分输入:输入10个整数,取值0~100输出:输出及格线,10的倍数中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。
每盏电灯由一个拉线开关控制。
开始,电灯全部关着。
有n个学生从长廊穿过。
第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。
n个学生按此规定走完后,长廊里电灯有几盏亮着。
注:电灯数和学生数一致。
输入:电灯的数量输出:亮着的电灯数量高级题:地铁换乘已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。
经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。
编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线A(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15输入:输入两个不同的站名输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次。
华为机试题库及答案华为是全球领先的信息与通信技术(ICT)解决方案提供商。
作为一家创新型企业,华为一直重视人才培养和招聘,为了筛选出最优秀的人才,华为设立了机试题库。
以下是华为机试题库的一些题目及其答案供参考。
一、Java基础1. 输出"Hello, Huawei!"的Java代码如下:```javapublic class HelloWorld {public static void main(String[] args) {System.out.println("Hello, Huawei!");}}```2. 计算1到100的和的Java代码如下:```javapublic class SumOfNumbers {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}System.out.println("Sum of numbers from 1 to 100: " + sum); }}```3. 实现斐波那契数列的Java代码如下:```javapublic class FibonacciSeries {public static void main(String[] args) {int n = 10;int first = 0;int second = 1;System.out.print("Fibonacci series of " + n + " terms: ");for (int i = 1; i <= n; i++) {System.out.print(first + " ");int next = first + second;first = second;second = next;}}}```二、数据结构和算法1. 实现冒泡排序的Java代码如下:```javapublic class BubbleSort {public static void main(String[] args) { int[] array = {5, 2, 8, 3, 1};int n = array.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1 - i; j++) { if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}System.out.print("Sorted array: "); for (int i = 0; i < n; i++) {System.out.print(array[i] + " "); }}}```2. 实现二分查找的Java代码如下:```javapublic class BinarySearch {public static void main(String[] args) { int[] array = {1, 3, 5, 7, 9};int target = 5;int low = 0;int high = array.length - 1;while (low <= high) {int mid = (low + high) / 2;if (array[mid] == target) {System.out.println("Target found at index: " + mid); break;} else if (array[mid] < target) {low = mid + 1;} else {high = mid - 1;}}if (low > high) {System.out.println("Target not found in the array."); }}}```三、网络和操作系统1. 解释TCP和UDP的区别:TCP(传输控制协议)提供可靠的、面向连接的数据传输服务,确保数据的完整性和有序性,适用于对数据传输要求较高的场景,如文件传输、网页加载。
销售网络问题时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte问题描述华为公司积极开拓北美市场,首先在北美建立销售总部,总部在附近地区发展一些销售点,这些销售点可以发展建立下一级销售点,依此类推,最终形成一个新型分级销售网络。
假设在销售网络中,有N个销售点(包括总部),将它们分别编号为1至N。
考虑到金融危机,销售总部决定撤销一些销售点,保留其他销售点。
需要注意是:(1)如果撤销一个销售点,那么该销售点发展的所有下级销售点均要撤销,依此类推;(2)销售总部不能撤销自己;(3)销售总部可以不撤销任何销售点。
请你帮忙告诉华为公司:共存在多少个销售点撤销方案。
问题输入输入包括多个行,首先给出一个整数N,接着N-1行给出销售网络的建立过程,在这N-1行中,第j行(1≤j≤N-1)给出一个整数k(i<k),表示销售点k发展了销售点j。
销售点N就是销售总部。
问题输出输出一行,给出销售点撤销方案数。
样例输入323样例输出3提示:样例有3个销售点(包括总部),“销售点2”发展了“销售点1”,“销售点3”发展了“销售点2”,根据描述,有以下3种销售点撤销方案:(1)不撤销任何销售点;(2)撤销“销售点1”;(3)撤销“销售点1”、“销售点2”。
语言识别问题时间限制(普通/Java):10000MS/30000MS 运行内存限制:65536KByte问题描述给你一段英文或德文文字,你能编程识别它可能是哪种语言吗?研究发现,统计文字中字母“t”(或“T”)与“s”(或“S”)出现的次数,如果给定文字中“t”(或“T”)的出现次数比“s”(或“S”)多,则可能为英文,否则可能为德文。
问题输入输入包括多个行数,首先给出整数N(1<N<10000),接着给出N行文字,每一行文字至少包括一个字符,至多100个字符。
问题输出输出包括一行,如果输入文字可能为英文,则输出English,否则输出Deutsch。
样例输入6ON THIS THE REST OF THE ACHAEANS WITHONE VOICE WERE FOR RESPECTINGTHE PRIEST AND TAKING THE RANSOM THAT HE OFFERED; BUT NOT SO AGAMEMNON,WHO SPOKE FIERCELY TO HIM AND SENT HIM ROUGHLY AWAY.OLD MAN, SAID HE,LET ME NOT FIND YOU TARRYING ABOUT OUR SHIPS样例输出English提示本题纯属虚构股票投资问题时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte问题描述股票是一种有价证券,是股份公司为筹集资金发给投资者作为公司资本部分所有权的凭证,成为股东以此获得股息(股利),并分享公司成长或交易市场波动带来的利润;但也要共同承担公司运作错误所带来的风险。
南邮华为俱乐部会长小郑同学最近计划进入股市淘金,看中一支股票,借本次华为赛机会,请你帮忙指出:何时买卖这支股票,才能获得最大收益。
已知小郑投资A元,可以预测到未来12天该支股票的价格,请注意:(1)股票每一天的价格都不一样;(2)如果同时有两种安排获得一样的收益,选择在股价最低时购买;(3)小郑在12天内只能购买一次股票,并且认购的股数必须为整数;(4)如果按照股价趋势,不能获得收益,只需输出IMPOSSIBLE。
问题输入输入包括多个测试用例,首先给出测试用例数B,接着给出B个测试用例。
每一个测试用例包括两行,其中第一行给出小郑计划投资的资金数A,第一行给出以空格分隔的12个整数,指出未来12天股票每一天价格F。
注意:100≤A≤500,B≤200,1≤F≤250。
问题输出输出包括多行,对于每个测试用例输出一行,输出IMPOSSIBLE;或者以空格分隔的3个整数C、D、E,第1个整数C表示小郑第C天购买股票(1≤C≤11),第2个整数D表示小郑第D天卖出股票(C+1≤D≤12),第3个整数E表示小郑的股票收益。
样例输入2146208 117 109 238 144 248 138 39 106 9 159 1812012 11 10 9 8 7 6 5 4 3 2 1样例输出10 11 2400IMPOSSIBLE到华为又玩了一把面试,竟然增加了一个上机考试的题目,呵呵,增加了新花样啊。
对于把华为面试当成软件水平测试的我来说,是一个很大惊喜。
好,现在说上机考试:1.首先,在他们上机考试的页面里面,输入你的名字和手机号码(这个也是华为s的首创,为直接找成绩优异的考生方便:))2.下载他们的机考代码,一个简单的工程,里面有一个未实现的函数,和函数功能说明。
3.你实现这个函数,调试通过程序,然后,打包成zip文件上传。
我遇到的题目是这样的:一个字串里面包一些位置不定的空格符(space character),要把里面所有的非空格字符找出来,把空格用','替换。
替换后的句子末尾必须有一个…,‟存在。
例如:“this is an demo”替换后的结果应该为:"this,is,an,demo,"呵呵,题目是不是很简单呢?其实,这个题目里面还是有很多“点”呢,一点考虑不到,就会影响你的成绩。
现在介绍下我实现的函数:void ReplaceString(char *pInString ,int iLeng ,char *pOutString)//(pOutString 假定是足够长的内存,从外部传入){*pOutString = "/0";while( *pInString == ' ') // jump space character that occur at start . pInString ++;char *ptOutString = pOutString ;while(*pInStirng){*ptOutString= *pInString;ptOutString++;pInString++;if(*pInString == ' '){*ptOutString= ',';ptOutString++;}while(*pInString && *pInString == ' ')pInString++;}*ptOutString= '/0';if(pOutString[0] != '/0' && *(ptOutString -1)!=','){*ptOutString = ',';* (++ptOutString ) = '/0';}}2012华为校园招聘上机笔试题如同往年,华为今年刚一开学就来学校宣讲了,9月6日和7日安排了软件研发类的上机笔试(其他职位没有笔试,直接通过网上注册的简历筛选并安排面试)。
说下华为上机考试的特点和一些注意事项:(1)考试时长为2个小时,总共有3个题(去年是2个题,难度要比今年大些),使用的是VC 6.0;(2)3个题目中大致第一个题是最简单的,第三个题是最难的,这个难度只是假设你对所有的题都不熟悉而言的,所以在拿到题目过后一定要把所有题目过一遍,弄懂它们的要点,看是否有自己熟悉的题目,也做到心里有数。
这算得上是我昨天笔试的时候的一个教训吧;(3)从服务器上下载题目下来后最好能把工程保存到在电脑重启后不会自动还原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消失;(4)不要改动所给函数的原型,可以自己添加函数。
另外,华为提供的工程是将Main 函数隐藏了的,所以自己不用再添加Main函数。
以上便是我对于这次考试了解的一些情况,下面说说我做的3个笔试题(题意我只能大概的按我的理解组织下)。
1. 从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。
这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。
函数原型为int compare_array( int len1, int array1[], int len2, int array2[] );其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。
以下是上题的函数实现:compare_array2. 约瑟夫环(待添加)3. 字符串四则运算的实现题目大意:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。
四则运算即:加减乘除"+-*/",另外该表达式中的数字只能是1位(数值范围0~9)。
另若有不能整除的情况,按向下取整处理,eg: 8/3得出值为2。
若有字符串"8+7*2-9/3",计算出其值为19。
主要考点:1. 数字的字符形式变换为数字形式的方法;2. 数字的数字形式变换为数字的字符串形式的方法。
以下是函数实现:1.给定两个int型一维数组,和他们的长度,然后从最后一个元素开始比较,输出不一样的元素个数。
一开始也不知道是咋回事读了半天都没看明白,其实很简单。
两个数组比如是{1,3,5}和{22,17,1,3,5},从屁股开始比较。
5和5一样,3和3一样,1和1 一样,所以结果是0.如果是{1,3,5}和{7,8,9,0},5和0不一样,3和9不一样,1和8不一样,输出是3.以长度最短的数组为准。
其实是很简单的~~2。
就是一个约瑟夫环问题,也是int数组和间隔值M,数M个后踢出一个元素,并让M=踢出元素。
然后接着数,也是比较简单的。
但当时我完全忘记C的库函数咋个调用,以至于连MOD都是自己瞎编的……3.字符串计算。
输入是char *oper = "4/2+3-2*4"然后算出答案就行了,只有+-*/连括号都不用。
其实这个题是我们当时算法上机课里面第一个做的好像,就是用堆栈压进弹出乱七八糟的,而且这个连括号都没有,真的是很基本。
不过记得做作业的时候用了很长时间,而且一时间就只记得是用堆栈,连原理都忘记了,果断放弃了。
第一题【20分】:鉴定回文数组。
第二题【30分】:求两个整型数组的异集,即A+B-(A与B的交集)。