2014华为上机题

合集下载

2014华为机试笔试题目

2014华为机试笔试题目

2014华为机试笔试题目2014华为机试笔试题目1.输入摸一个数,然后将其倒过来相加,如果和不是回文串,那么将和再采取同样的操作,在判断得到的是否为回文串,这样往返7次,如果其中有一次是回文就直接打出来,若都没有,那么输出0;也很简单!用库函数更简单,itoa这个!整数转成字符,然后判断回文!2.关于匹配的字符串的个数的最大值,即目标字符串与多个字符串比配,找出匹配最多的那个字符串。

其实代码很简单,我当时用2个数组,下标即为字符,值为出现次数,这样比较即可;可是我输入字符的代码写错了比如要输入Li si;到一个字符数组里面,我写成了char a[200];cin a;//这里错了,应该写为cin.getline(a,200);因为cin输入遇到空格就认为输入结束,所以只有li,没有si3.输入一个十进制的数,与一个n整数,求输出这个十进制数的n 进制的数!分析:哎,真倒霉,可以用atoi函数啊itoa函数#include cstdlib #include cstdio int main(){int num = 10; char str[100]; itoa(num, str, 2);printf( %s\n , str);return 0;}itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数。

在上例中,转换基数为10。

10:十进制;2:二进制于是想到了一个十进制转二进制的方法:#include cstdlib#include cstdioint main(){int num = 10;char str[100];int n = atoi(itoa(num, str, 2)); printf( %d\n ,n); return 0;}。

华为上机题

华为上机题

1.样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分2.样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

每盏电灯由一个拉线开关控制。

开始,电灯全部关着。

有n个学生从长廊穿过。

第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。

n个学生按此规定走完后,长廊里电灯有几盏亮着。

注:电灯数和学生数一致。

3.样题-高级题:地铁换乘已知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地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B154.去掉最大值、最小值之后剩下的个数输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。

(其中最大值与最小值可能有多个)Smple input:3,3,5,3,6,9,7,9 Sample outPut: 35.从5个人中选取2个人作为礼仪要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。

华为上机笔试题——BYXianNv

华为上机笔试题——BYXianNv

1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数void Stringchang(const char*inpu,char*output)其中input是输入字符串,output是输出字符串#include<stdio.h>#include<assert.h>void Stringchang(const char*input,char*output){const char *p=input;/*if(input==NULL){printf("ERROR"); //用这种表示方式可否?return; //用return 好不好?} */assert(input!=NULL);while(*p!='\0'){if((*p>='a')&&(*p<='y')||(*p>='A')&&(*p<='Y') )*output=*p+1;else if(*p=='z'||*p=='Z')*output=*p+1-26;else*output=*p;output++;p++;}*output=0;}void main(){char a[11]={"abc"}; //如何模拟空指针的情况char b[11];Stringchang(a,b);printf("%s",b);}2.求一个整型数字中有没有相同的部分,例如12389756123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。

函数为int same(int num)其中num是输入的整型数字#include<iostream>using namespace std;int same(int num) //整数值的范围:long int为-2(共10位)到正2开头共10位;unsigned //long int 为从0到4的共10位数{char a[11];int i=0,m=0,j=0;while(num){a[i]=num%10+'0';num=num/10;i++;j++;}i=0;int k=j;while(i<j){char temp=a[i];a[i]=a[j-1];a[j-1]=temp;i++;j--;}for(i=0;i<k-2;i++) //更标准{for(j=i+1;j<k-1;j++) //更妥当当为888时也判断的算是{if(a[i]==a[j]&&a[i+1]==a[j+1])return 1;}}return 0;}int main() //是不是用int 会好一点?{int a,b;cin>>a;b=same(a);cout<<b<<endl;return 0;}3.求两个字符串的乘积,结果存到字符串中,例如字符串一中存的“657891”,字符串二中存的“521”,分别将字符串中的字符转换成整型数字,进行计算后,再转换成字符类型存储起来.函数为void mul(char *input1,int n,char *input2, int m,char *output)其中input1和input2是输入,n是input1的长度,m是input2的长度。

华为2014年上机笔试题

华为2014年上机笔试题

华为2014年上机笔试题华为2014年上机笔试题1.输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50参考代码:#includemain(){int num[50]={0};int i,n;printf(“请输入整型数组的长度(1~50):”);scanf(“%d”,&n);printf(“请输入整型数组的元素:”);for (i=0;i<n;i++)< bdsfid="102" p=""> </n;i++)<>{scanf(“%d”,&num[i]);}int min_num=num[0];int max_num=num[0];for(int j=0;j<n;j++)< bdsfid="109" p=""> </n;j++)<>{if(max_num<num[j])< bdsfid="112" p=""> </num[j])<>max_num=num[j];else if(min_num>num[j])min_num=num[j];}int sum=min_num+max_num;printf(“数组中最大与最小值之和:%d\n”,sum);return 0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333 。

3111111111111111111111111.。

,则输出。

#include#include#includemain(){char *num1,*num2; //两个长长整型数据char *sum;// int temp;int len_num1,len_num2; // 两个长长整型数据的长度int len_max,len_min;num1=(char*)malloc(sizeof(char));num2=(char*)malloc(sizeof(char));printf(“输入两个长长整型数据:”);scanf(“%s”,num1);printf(“输入两个长长整型数据:”);scanf(“%s”,num2);len_num1=strlen(num1);len_num2=strlen(num2);len_max=(len_num1>=len_num2)? len_num1:len_num2;len_min=(len_num1<=len_num2)? len_num1:len_num2;int len_max1=len_max;sum=(char*)malloc(sizeof(char)*len_max);memset(sum,0×00,len_max+1);//切忌初始化for(;len_num1>0&&len_num2>0;len_num1–,len_num2–){sum[len_max--]=((num1[len_num1-1]-’0′)+(num2[len_num2-1]-’0′));}if(len_num1>0){sum[len_max--]=num1[len_num1 - 1 ]-’0′;len_num1–;}if(len_num2>0){sum[len_max--]=num1[len_num2 - 1]-’0′;len_num2–;}for(int j=len_max1;j>=0;j–) //实现进位操作{// temp=sum[j]-’0′;if(sum[j]>=10){sum[j-1]+=sum[j]/10;sum[j]%=10;}}char *outsum=(char*)malloc(sizeof(char)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)< bdsfid="176" p=""> </len_max1;j++,m++)<>outsum[m]=sum[j]+’0′;outsum[m]=’\0′;printf(“输出两长长整型数据之和:%s\n”,outsum);return 0;}3.通过键盘输入一串小写字母(a~z)组成的字符串。

最全华为上机试题及部分答案

最全华为上机试题及部分答案

2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。

[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。

两者相同则得分,不同则不得分。

4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)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;}(18) 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

华为_机考_答案(精选27题)

华为_机考_答案(精选27题)

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。

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

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

自己写的,水平很挫,仅供参考目录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.判断某个整数是回文。

2014年华为校园招聘java考题试卷及答案

2014年华为校园招聘java考题试卷及答案

2014年华为校园招聘java考题试卷及解答一单项选择题1.Java是从( )语言改进重新设计。

A.AdaB.C++C.PasacalD.BASIC解答:B2.下列语句哪一个正确( )A. Java程序经编译后会产生machine codeB. Java程序经编译后会产生byte codeC. Java程序经编译后会产生DLLD. 以上都不正确解答:B3.下列说法正确的有( )A. class中的constructor不可省略B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行D. 一个class只能定义一个constructor解答:C4.提供Java存取数据库能力的包是( )A.java.sqlB.java.awtngD.java.swing解答:A5.下列运算符合法的是( )A.&&B.<>C.ifD.:=解答:A6.执行如下程序代码a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是( )A.0B.1C.-1D.死循环解答:C7.下列哪一种叙述是正确的( )A. abstract修饰符可修饰字段、方法和类B. 抽象方法的body部分必须用一对大括号{ }包住C. 声明抽象方法,大括号可有可无D. 声明抽象方法不可写出大括号解答:D8.下列语句正确的是( )A. 形式参数可被视为local variableB. 形式参数可被字段修饰符修饰C. 形式参数为方法被调用时,真正被传递的参数D. 形式参数不可以是对象解答:A9.下列哪种说法是正确的( )A. 实例方法可直接调用超类的实例方法B. 实例方法可直接调用超类的类方法C. 实例方法可直接调用其他类的实例方法D. 实例方法可直接调用本类的类方法解答:D二、多项选择题1.Java程序的种类有( )A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有( )A. 环境变量可在编译source code时指定B. 在编译程序时,所能指定的环境变量不包括class pathC. javac一次可同时编译数个Java源文件D. javac.exe能指定编译结果要置于哪个目录(directory) 解答:BCD3.下列标识符不合法的有( )A.newB.$UsdollarsC.1234D.car.taxi解答:ACD4.下列说法错误的有( )A. 数组是一种对象B. 数组属于一种原生类C. int number=[]={31,23,33,43,35,63}D. 数组的大小可以任意改变解答:BCD5.不能用来修饰interface的有( )A.privateB.publicC.protectedD.static解答:ACD6.下列正确的有( )A. call by value不会改变实际参数的数值B. call by reference能改变实际参数的参照地址C. call by reference不能改变实际参数的参照地址D. call by reference能改变实际参数的内容解答:ACD7.下列说法错误的有( )A. 在类方法中可用this来调用本类的类方法B. 在类方法中调用本类的类方法时可直接调用C. 在类方法中只能调用本类中的类方法D. 在类方法中绝对不能调用实例方法解答:ACD8.下列说法错误的有( )A. Java面向对象语言容许单独的过程与函数存在B. Java面向对象语言容许单独的方法存在C. Java语言中的方法属于类中的成员(member)D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同解答:ABC9.下列说法错误的有( )A. 能被java.exe成功运行的java class文件必须有main()方法B. J2SDK就是Java APIC. Appletviewer.exe可利用jar选项运行.jar文件D. 能被Appletviewer成功运行的java class文件必须有main()方法三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。

【VIP专享】(6.10)2014年华为校招问题回答汇总

【VIP专享】(6.10)2014年华为校招问题回答汇总

华为校招问题与解答6月10日1.希望了解一些软件考试方面的信息ANS:7月上旬机试,大家等艾庆兴的技术专场,会在各高校讲。

(ps.给刚才提到的艾庆兴同学做个简介,外号“艾神”,2014华为最高特殊起薪;百度之星程序设计大赛冠军;ACM/ICPC程序设计大赛金奖、银奖;腾讯编程马拉松区域决赛第二名;2013陕西ACM/ICPC程序设计大赛参与命题;最主要做过14届所有的华为机试题,认真听他的讲座可以大大提高机试通过率)2.华为招聘员工对英语有什么要求啊?ANS:研发类4级通过即可。

3.本科生能做除了研发其他的部门吗?ANS:华为的本科生岗位非常多。

具体的岗位可登陆华为招聘官网查。

4.我想问问除了一些知识上的要求,华为对想进华为的学生有什么建议呢?ANS:学历只是参考,重视个人素质与能力5.华为今年的暑期实习还可以补录吗?ANS:华为实习生招聘已结束,不能再补录。

6.7月份的机试是提前批还是正式秋招的机试?是软件类还是硬件类?ANS:7月份是正式的秋招机试,软件类招聘第一个环节,希望有意向的同学可以安排好时间。

时间定在7月中上旬。

7.除了这次7月份的校招,开学还有没有新一轮的校招?ANS:7月份软件机试是核心,尽量协调好时间,因为很可能9月份将不再设置软件类机试。

8.华为今年的招聘是不是和往年一样也分好几个批次?ANS:不能保证有几个批次,机会先到先得,有意向的同学还望早作准备。

9.华为有内推吗?是什么呢?ANS:有的,每个学校都是有接口人的。

10.如果是分多批次的话,七月份提前批比后面的校招有什么优惠政策?ANS:机试出色的人,可以参加优先招聘,会定制部门,特殊起薪机会,还可以选择优秀的导师。

11.7月份校招的需要暑假去华为呆上一段时间吗?参加了7月批次的还能不能参加后续的招聘?ANS:不需要去华为呆上一段时间。

7月份的软件机试,是整个华为面试的一个重要环节。

重点是软件类岗位。

12.实习的时候招硬件非常少,这次呢?ANS:软硬件都是主流招聘岗位。

华为2014面试题目(3篇)

华为2014面试题目(3篇)

第1篇随着科技产业的飞速发展,华为作为中国乃至全球通信行业的领军企业,其招聘流程和面试题目一直备受关注。

2014年的华为面试题目涵盖了技术、心理、综合等多个方面,以下是针对当年面试题目的解析和备考指导。

一、技术面试题目解析1. 指针数据交换内容题目描述:以下代码实现了指针所指内容的交换,请解释其原理。

解析:该题考察了指针和数组的基本操作。

代码通过交换指针p1和p2所指向的内存地址中的内容,实现了交换。

2. 指针与多维数组题目描述:给定一个二维数组a[5][5],问指针p的值是多少?解析:该题考察了指针和数组的关系。

根据题意,a[1]为第二行第一列元素的地址,a[1[5]为偏移5个单位,即元素35的地址,因此p的值为35。

3. C语言基础题目描述:以下代码中,哪些语句是错误的?解析:该题考察了C语言的基本语法。

正确的语句包括:- float f1/2; // 错误,应为f1 = 1.0/2;- switch()里数据类型只能是int、char、枚举以及引用字符串;- case 1-2: 是错误的;- 0.5f也是错的,浮点数比较应该用范围;- continue用的不合理。

4. Java类题目描述:请解释临界区概念、常见的排序算法、哈希表原理等。

解析:该题考察了Java编程语言的基本概念。

- 临界区概念:临界区是指多个线程访问共享资源时,需要保证同一时间只有一个线程可以访问该资源。

- 常见的排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序等。

- 哈希表原理:哈希表是一种数据结构,它通过哈希函数将键映射到数组中的一个位置,以快速检索值。

5. 软件工程流程题目描述:请简述软件工程流程。

解析:软件工程流程包括需求分析、系统设计、编码实现、测试、部署和维护等阶段。

6. 数据库知识题目描述:请说明你使用的数据库及其应用场景,以及数据库表的一些优化措施。

解析:该题考察了数据库的基本知识和应用。

请根据个人经历回答。

华为上机笔试题

华为上机笔试题

华为上机笔试题(1)求两个整数的最⼩公倍数#include <iostream>using namespace std;int gcd(int a,int b);//⽤辗转相除法求最⼤公约数int main(){int a,b;cin>>a>>b;int res=a*b/gcd(a,b);cout<<res;}int gcd(int a,int b){return a%b==0?b:gcd(b,a%b);}基本思路就是先⽤辗转相除法求得两个数的最⼤公约数,然后两个数相乘除以最⼤公约数就得到了最⼩公倍数。

(2)不使⽤库函数求⼀个数的⽴⽅根主要有两种思路,⼀种是⽤⼆分法,可令左初值为1,右初值为num,不断⼆分找根;另⼀种是⽤⽜顿迭代法,直接⽤迭代公式求解。

⼆分法代码:#include <algorithm>#include <cmath>#include <stdio.h>using namespace std;int main(){double num; //待处理的数scanf("%f",&num);const double err=0.001; //允许的误差bool done=false;double start=1.0,end=num;double res;while(!done){double mid=(start+end)/2;if(abs(pow(mid,3)-num)<=err){res=mid;done=true;}else if(pow(mid,3)-num>err)end=mid;elsestart=mid;}printf("%.1f",res);return 0;}⽜顿迭代法代码:#include <algorithm>#include <cmath>#include <stdio.h>using namespace std;int main(){double num;scanf("%lf",&num);const double err=0.000001;bool done=false;double xn=1;while(!done){if(abs(pow(xn,3)-num)<=err)done=true;else{xn=2.0/3.0*xn+num/(3*xn*xn);}}printf("%.1f",xn);return 0;}⽜顿迭代公式x_{n+1}=x_n-\frac{f(x_n)}{f^*(x_n)},在本道题中相当于要求f(x)=x^3-num=0的解,所以只需要按照上述迭代公式进⾏求解就可以。

2014华为上机试题及答案2(DOC)

2014华为上机试题及答案2(DOC)

目录样题-初级题:从考试成绩中划出及格线 (2)样题-中级题:亮着电灯的盏数 (3)样题-高级题:地铁换乘 (5)8.29去掉最大值、最小值之后剩下的个数 (8)8.29从5个人中选取2个人作为礼仪 (10)8.29验证括号是否匹配 (12)8.31回文数 (13)8.31将第一行中含有第二行中“23”的数输出并排序 (14)8.31翻译电话号码 (16)9.1.AM 将整数倒序输出,剔除重复数据 (18)9.1.AM 大数相减 (19)9.1.AM 判断if语句括号是否合法 (22)9.1.PM (23)9.1.PM (24)9.1.PM (25)样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分#include<stdio.h>void sort(int a[]){int i,j,t;for(i = 0;i < 10;i++)for(j = i+1;j<10;j++){if(a[i] > a[j]){t = a[i];a[i] = a[j];a[j] = t;}}}int main()int num[10] = {0};scanf("%d%d%d%d%d%d%d%d%d%d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7], &num[8],&num[9]);sort(num);if(num[0] > 60)printf("60");elseprintf("%d",(num[4]/10)*10);return 0 ;}样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

2014-8-19-华为机试题

2014-8-19-华为机试题

/*描述:给定一个只包含字母的字符串,将其大写字母转换成小写字母,小写字母转换成大写字母,最后拼接在一起倒着输出运行时间限制: 1 Sec内存限制: 无限制输入:输入内容只存在若干个字符串,只包含字母,每个字符串之间以空格隔开,所有输入内容的总长度不超过255。

输出:输出一个字符串,开头无空格,结尾换行样例输入:UOY EVOL I样例输出:iloveyou*/#include <stdio.h>#include <string.h>#include <ctype.h>#include <malloc.h>void main(){int i = 0;int j = 0;char ss[256] = {'\0'};int len;char *p;// char tmp;gets(ss);len = strlen(ss); //字符串长度p = (char*)malloc(len+1); //申请空间for(i=len-1;i>=0;i--) //从最后一个开始处理{if(isupper(ss[i])) //大写字母{*(p+j) = ss[i]+('a'-'A');j++;}else if(islower(ss[i]))*(p+j) = ss[i]-('a'-'A');j++;}}*(p+j)='\0';printf("%s\r\n",p);free(p);}题目二:/*述:某协议包括字段:类型Type 一个字节;命令字Command 一个字节;端口号Port 2个字节;结果Result 2个字节;传输模式TransMode 2个字节;上传速度RateUp 4个字节;下载速度RateDown 4个字节;说明:(1) 协议采用网络序(2) 协议数据内容为内存16进制值如下为一个简单的协议数据:18 12 00 0a 00 00 00 01 00 03 0D 40 00 00 00 14通过数据我们并不能直观地看出对应的参数值,所以通过程序自动实现协议解析运行时间限制: 10 Sec内存限制: 128 MByte输入:一行字符串,内容为内存16进制值,每个16进制值之间用空格隔开输出:解析协议,每个协议字段一行,按示例顺序输出。

2014年华为校园招聘java考题试卷及答案

2014年华为校园招聘java考题试卷及答案

2014年华为校园招聘java考题试卷及答案一单项选择题1.Java是从( )语言改进重新设计。

A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确( )A. Java程序经编译后会产生machine codeB. Java程序经编译后会产生byte codeC. Java程序经编译后会产生DLLD. 以上都不正确答案:B3.下列说法正确的有( )A. class中的constructor不可省略B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行D. 一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是( )A.java.sqlB.java.awtngD.java.swing答案:A5.下列运算符合法的是( )A.&&B.<>C.ifD.:=答案:A6.执行如下程序代码a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是( )A.0B.1C.-1D.死循环答案:C7.下列哪一种叙述是正确的( )A. abstract修饰符可修饰字段、方法和类B. 抽象方法的body部分必须用一对大括号{ }包住C. 声明抽象方法,大括号可有可无D. 声明抽象方法不可写出大括号答案:D8.下列语句正确的是( )A. 形式参数可被视为local variableB. 形式参数可被字段修饰符修饰C. 形式参数为方法被调用时,真正被传递的参数D. 形式参数不可以是对象答案:A9.下列哪种说法是正确的( )A. 实例方法可直接调用超类的实例方法B. 实例方法可直接调用超类的类方法C. 实例方法可直接调用其他类的实例方法D. 实例方法可直接调用本类的类方法答案:D二、多项选择题1.Java程序的种类有( )A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有( )A. 环境变量可在编译source code时指定B. 在编译程序时,所能指定的环境变量不包括class pathC. javac一次可同时编译数个Java源文件D. javac.exe能指定编译结果要置于哪个目录(directory) 答案:BCD3.下列标识符不合法的有( )A.newB.$UsdollarsC.1234D.car.taxi答案:ACD4.下列说法错误的有( )A. 数组是一种对象B. 数组属于一种原生类C. int number=[]={31,23,33,43,35,63}D. 数组的大小可以任意改变答案:BCD5.不能用来修饰interface的有( )A.privateB.publicC.protectedD.static答案:ACD6.下列正确的有( )A. call by value不会改变实际参数的数值B. call by reference能改变实际参数的参照地址C. call by reference不能改变实际参数的参照地址D. call by reference能改变实际参数的内容答案:ACD7.下列说法错误的有( )A. 在类方法中可用this来调用本类的类方法B. 在类方法中调用本类的类方法时可直接调用C. 在类方法中只能调用本类中的类方法D. 在类方法中绝对不能调用实例方法答案:ACD8.下列说法错误的有( )A. Java面向对象语言容许单独的过程与函数存在B. Java面向对象语言容许单独的方法存在C. Java语言中的方法属于类中的成员(member)D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同答案:ABC9.下列说法错误的有( )A. 能被java.exe成功运行的java class文件必须有main()方法B. J2SDK就是Java APIC. Appletviewer.exe可利用jar选项运行.jar文件D. 能被Appletviewer成功运行的java class文件必须有main()方法三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。

华为机考试题+答案

华为机考试题+答案

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[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

20140330最新华为认证考题(答案仅供参考)

20140330最新华为认证考题(答案仅供参考)

20140330最新华为认证考题(答案仅供参考)一、判断题1、4*2MIMO(发送端:4根天线,接收端:2根)的RANK(或者叫“秩”)最大为4 (F)最大为2,因为现在手机最多支持双流。

2、MIMO模式分为分集和复用,其中分集主要是提升小区覆盖,而复用主要是提升小区容量。

(T)分集主要为了提升信号质量,复用主要为了提高频率利用率3、LTE系统是要求上行同步的系统,上行同步主要是为了消除小区内不同用户之间的干扰。

T4、OFDM保护间隔和循环前缀的引入主要是为了克服符号间干扰ISI 以及子载波间干扰ICI。

(T)5、基于非竞争的·随机接入过程,其接入前导的分配是由网络侧分配的。

(T)6、LTE的网络规划中区的覆盖半径是基于连续覆盖业务的速率来预测的。

(T)7、LTE系统对于下行物理信道PDSCH的功控协议不做强制要求,所以该信道可以不做功率控制。

T8、LTE核心网EPC主要有MME、S-GW、P-SW构成,其中P-GW负责分组数据路由转发,S-GW负责UE的IP地址分配。

(F)PGW负责UE的IP分配,SGW负责分组路由的转发。

9、LTE系统中,UE在属于同一个TA list下的多个Ta间移动不会触发Ta更新(T)10、RSRP即Reference Signal Receiving Powe,指参考信号在整个频点的全带宽功率(F)RSRP(Reference Signal Receiving Power):是在某个Symbol内承载RS的所有RE上接收到的信号功率的平均值11、只要ANR开关打开,即使没有配置异频点,异频ANR功能也会生效(F)异频邻区必须先加异频频点12、测量GAP就是让UE离开当前频点到其他频点测量的时间段,测量GAP用于异频测量和异系统测量(T)在测量GAP中不会传输数据,这个时间有6MS,所以会对速率产生一定影响13、对于电梯井、隧道、地下车库或者地下室、高大建筑物内部的信号盲区可以利用RRU、室分内部系统、泄露电缆、定向天线等方案来解决。

华为机考试题+答案

华为机考试题+答案

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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分样题-中级题:亮着电灯的盏数一条长廊里依次装有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 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B158.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。

(其中最大值与最小值可能有多个)Smple input:3,3,5,3,6,9,7,9 Sample outPut: 38.29从5个人中选取2个人作为礼仪2、要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。

Smple input:161 189 167 172 188 Sample outPut: 188 1898.29验证括号是否匹配3、输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.Smple input:dfa(sdf)df[dfds(dfd)] Smple outPut:08.31回文数1.判断回文数,是返回18.31将第一行中含有第二行中“23”的数输出并排序2.输入一行数字:123 423 5645 875 186523在输入第二行:23将第一行中含有第二行中“23”的数输出并排序结果即:123 423 1865238.31翻译电话号码3.将电话号码 one two 。

nine zero翻译成1 2 。

9 0中间会有double例如输入:OneTwoThree输出:123输入:OneTwoDoubleTwo输出:1222输入:1Two2 输出:ERROR输入:DoubleDoubleTwo 输出:ERROR第三题:有空格,非法字符,两个Double相连,Double位于最后一个单词都错误9.1.AM 将整数倒序输出,剔除重复数据输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。

如果是负数,比如输入-175,输出-571。

9.1.AM 大数相减输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。

备注:1、两个整数都是正整数,被减数大于减数示例:输入:10000000000000011输出:1000000000000000注意大数用char a[] 存储,用%s接收,一位一位的运算。

注意a[0]里的正负号。

9.1.AM 判断if语句括号是否合法编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。

同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。

注意if语句的最外面至少有一对括号。

提示:用堆栈来做。

输入:if((a==1)&&(b==1))输出:RIGTH 3 3输入:if((a==1))&&(b==1))输出:WRONG 3 49.1.PM字符串M化成以N为单位的段输入m个字符串和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。

如 n=8 m=9 ,123456789划分为:1234567890000000123化为:123000009.1.PM整数化为2进制数,32位长度。

然后逆序输出整数化为2进制数,32位长度。

然后逆序输出9.1.PM背包01背包给定一个数,比如20然后再给定几个数字 1 3 5 7 81 3 5 7 80 0 1 1 1因为5+7+8=20*1、输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。

* 要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符*/public class Demo1 {public static void main(String[] args) {Demo1 test = new Demo1();String data = "";String regex = "^[a-z]*$";if (data.matches(regex)) {System.out.println(test.getString(data));} else {System.out.println("输入的字符串不合法");}}public char[] getString(String data) {char[] arr = data.toCharArray();for (int i = 0; i < arr.length; i++) {if (arr[i] + 5 > 'z') {arr[i] = (char) (arr[i] - 21);} else {arr[i] = (char) (arr[i] + 5);}}return arr;}}/***2、求一个整形数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数要求:输入:整形数组中的元素个数及各个元素输出:整型数组中元素的平均值,大于和小于此平均值的元素个数 */public class Demo2 {public static void main(String[] args) {int[] arr ={1,100};new Demo2().getavage(arr, 2);}public void getavage(int[] arr, int num){if(num==0){System.out.println("数组为空");}else{double avage = 0.0;int sum = 0;int count1=0;int count2=0;for(int i=0;i<arr.length;i++){sum += arr[i];}avage = (double)sum/num;for(int j =0;j<num;j++){if(arr[j]>avage){count1++;}else{count2++;}}System.out.println("平均值:"+avage);System.out.println("大于平均值的元素个数:"+count1);System.out.println("小于平均值的元素个数:"+count2);}}}3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值例子:输入:1、2、5、9、84、3、2输出:84、9public class Demo3 {public static void main(String[] args) {Demo3 test = new Demo3();int[] arr = {1};test.getMaxValue(arr);}public void getMaxValue(int[] arr){int temp=0;if(arr.length<1){System.out.println("数组元素个数至少为2");}else{for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length-1-i;j++){if(arr[i]>arr[i+1]){temp = arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}}System.out.print(arr[arr.length-1]+"、"+arr[arr.length-2]);}}}4、回文数字判断。

题目描述:有这样一类数字,他们顺着看和倒着看是相同的数。

如:121,656,2332等。

这样的数字称为回文数字。

编写一个函数,判断某数字是否是回文数字。

public String isPalidrome(String strIn)输入:strIn:整数,以字符串表示返回:true:是回文数字false:不是回文数字只需完成该函数功能算法,中间不需要任何IO的输入和输出示例:输入:strIn="121",返回:truepublic class Demo4 {public boolean isPalindrome(String str) {char[] arr = str.toCharArray();int len = arr.length;boolean b = false;for(int i = 0; i <= len/2; i++ ) {if(arr[i] != arr[len-i-1]) {break;}b=true;}}public static void main(String[] args) {String str = "223322";if(new Demo4().isPalindrome(str) ) {System.out.println("该字符串是回文字符串!");} else {System.out.println("该字符串不是回文字符串!");}}}6、手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。

相关文档
最新文档