华为机试试题汇总
华为测试工程师机试真题
华为测试工程师机试题目汇总-附答案1.计算字符串最后一个单词的长度,单词以空格隔开。
输入:hello world 输出:5a=input().split()print(len(a[-1])if len(a)>1elselen(a[0]))Python3.x 中input() 函数接受一个标准输入数据,返回为string 类型。
import sysfor line in sys.stdin:#读入数据a = line.split()print len(a[-1])2.写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。
不区分大小写。
a=input().lower()b=input().lower()print(a.count(b))注:Python lower() 方法转换字符串中所有大写字符为小写。
3.明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。
然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。
请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
while True:try:n=int(input()) #读入第一行:随机整数的个数res=set()for i in range(n):res.add(int(input()))# 读入第n行:n个随机整数组成的数组for i in sorted(res):print(i)except:break注:set是一个无序且不重复的元素集合。
4.•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
def printStr(string):if len(string) <= 8:print(string + "0" * (8 - len(string)))else:while len(string) > 8:print(string[:8])string = string[8:]print(string + "0" * (8 - len(string)))a=input()b=input()printStr(a)printStr(b)5.写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。
华为机考题目及答案
华为机考题目及答案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.字符去重,例如输入字符串:“aabbccdd”,输出字符串“abcd,要求,不改变字符的顺序。
2.求解类似于2+22+222+2222的和。
3.判断一个邮件地址是否有效。
例如:huawei@ 判断条件:只有一个@符号,最后四个字符是.com ;不含空格;字符只能是‘a-z’,‘A-Z’,‘1-9’,‘_’,‘.’,'@'1.字符串首字母转换成大写举例:输入:this is a book返回:This Is A Book2.统计不同字符串的个数举例:输入:addfsdfasa输出:43.统计数字出现的次数,最大次数的统计出来举例:输入:323324423343输出:3,6华为面向2013年招聘笔试题笔试题目(机试,共两题)题目一:子串分离题目描述:通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。
请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
如果输入“abc def gh i d”,结果将是abc,def,gh,i,d,要求实现函数:void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出示例输入:“abc def gh i d”输出:“abc,def,gh,i,d,”题目二:逆序链表输出。
题目描述:将输入的一个单向链表,逆序后输出链表中的值。
链表定义如下:typedef struct tagListNode{int value;struct tagListNode *next;}ListNode;要求实现函数:void converse(ListNode **head);【输入】head:链表头节点,空间已经开辟好【输出】head:逆序后的链表头节点【返回】无【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出/*题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。
100道华为面试题
问题一:Could you please describe yourself?(能否请你形容一下自己?) 这个问题,一来是想要了解你是什么样的人,二来是想看看你是否知道如何重点 式地自我简介。
在回答时,要针对应征工作的性质来凸显自己的特色,可以多 用形容词,并且引用过去的工作经验,但是不必提及公司组织的名称,再者,你 还可以谈谈未来的生涯规画;但如果你是个社会新鲜人,就可以谈谈在校时的丰 功伟业。
比方说,今天你打算去应征行销的职务,你就可以说:I&mcreative andmotivated. I worked on several major marketing projects with positiveresults. I am now looking for achallenging marketing position in anestablished company.(我有创意、乂积极。
曾负责数项大型的行销项U , 皆有成效。
我现在希望在一家深具规模的公司内,担任有挑战性的行销职务。
) 问题二:Why do you think we should employ you?(你认为我们为何要雇用你?)雇主问此问题,希望你试图证明自己是最佳人选9并且测试你是否熟悉应征职务 的工作内容。
回答时,要迎合该公司对该职务的期望,不过切记别给人狂妄自 大的印象。
假设你今天要应征机械丄程的工作,你就可以说:I am suitable for the position, not only because I have a masters degree in mechanical engineering, butalsobecause I have worked in this field for more than five years. I believe that my experience can be put to use in further developing your business.(我很适合该职位,不只因为我有机械工程学的硕 士学位, 上用场,What classes did you like best back in school?(在学校你最喜欢此时,雇主想了解你的学习能力,以及你有兴趣的专业课程是否跟工作扯得上边; 此外,个人在求学过程的好恶,会反应在不同的工作岗位上。
华为机试题目总结(程序篇)
华为机试题目总结(程序篇)自己写的,水平很挫,仅供参考目录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.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。
华为机试题目全解
华为机试题【2011】1、(stdlib.h里面定义了五种类型、一些宏和通用工具函数。
类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit())#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define LENGTH 13int verifyMsisdn(char *inMsisdn){char *pchar=NULL;assert(inMsisdn!=NULL);if(LENGTH==strlen(inMsisdn)){if(('8'==*inMsisdn)&&(*(inMsisdn+1)=='6')){while(*inMsisdn!='\0'){if((*inMsisdn>='0')&&(*inMsisdn<='9'))inMsisdn++;elsereturn 2 ;}}elsereturn 3;}elsereturn 1;return 0;}int main(){char *pchar=NULL;unsigned char ichar=0;int result;switch(ichar){case 0:pchar="8612345363789";break; case 1:pchar="861111111111111";break; case 2:pchar="86s1234536366"; break; default:break;}result =verifyMsisdn(pchar);printf("result is %d\n",result);}华赛面试:1.char m[]={"I", "LOVE", "CHINA"} char* p=m;printf("%s", *p++);printf("%c", **p);int main(){double x=1;double y;y=x+3/2;printf("%f\n",y);return 0;} //////结果为2.0000003.4.找错unsigned int f(){unsigned char a=123;unsigned char res;while(a-->=0){res+=a;}return res;}//res没有初始化5.struct node{int data;node* pre;node* next;}结构体数组转双向循环链表1. 数组比较(20 分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2 个数组长度不等,则只比较较短长度数组个数元素。
华为_机考_答案(精选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。
华为手机笔试题目及答案
华为手机笔试题目及答案一、单选题(每题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. 华为手机的“智慧识屏”功能可以识别语音。
从网上整理的华为机试题目
一、华为机试——2018年校招10号参加的华为的机试,这次的3道题难度适中。
第一题字符串,第二题贪心算法(会不会),dp可以解,第三题长整数相乘。
因为题主做过第三题原题,刚开始就把第三题秒了~~然后开始做第一题,一般10分钟就可以搞定。
第二题要想一下,不过也差不多是原题,Leetcode上第55题jump game应该是此题原型。
因为都刷过几乎是原题的原故,一个小时不到3题就AC完了下面是完整题目和代码题目一、给你一个原始字符串,根据该字符串内每个字符出现的次数,按照ASCII码递增顺序重新调整输出。
举例!假设原始字符串为eeefgghhh则每种字符出现的次数分别是3次 1次 1次 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<();i++){11.a[str[i]]++;}....位。
我不放心,输出测试一下。
之后就简单了,输出a数组中从小到大第一个值为1的i值即可。
值得注意的是,这种题其实写在一个main函数里就够了,而且这样写也比较好。
毕竟机试不是做项目,不需要模块化,这样修改起来也比较容易。
题目二、宝宝表示这道题其实不难,就是两个字,复杂。
我的思路大概就是1.首先判断所给矩形是否相交,不相交直接输出02.若相交,将相交面积表示出来,并输出结果最后发现貌似判断相交的思路会影响相交求面积的思路(正所谓数学题多问,第一问为第二问做铺垫一样)由于我的判相交思路不好影响了第二问,导致这一题我没做出来。
华为机试试题汇总
1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50include<>main{intnum50={0};inti,n;printf"请输入整型数组的长度1~50:";scanf"%d",&n;printf"请输入整型数组的元素:";fori=0;i<n;i++{scanf"%d",&numi;}intmin_num=num0;intmax_num=num0;forintj=0;j<n;j++{ifmax_num<numjmax_num=numj;elseifmin_num>numjmin_num=numj;}intsum=min_num+max_num;printf"数组中最大与最小值之和:%d\n",sum;return0;}include<>include<>include<>main{charnum1,num2; 过键盘输入一串小写字母a~z组成的字符串;请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉;比如字符串“abacacde”过滤结果为“abcde”;要求实现函数:void stringFilterconst char pInputStr,long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void stringFilterconst char p_str, longlen, char p_outstr {intarray256={0};const char tmp = p_str;forint j=0;j<len;j++{ifarraytmpj==0p_outstr++=tmpj;arraytmpj++;}p_outstr= '\0';}void main{char str = "cccddecc";intlen = strlenstr;char outstr = char malloclensizeofchar; stringFilterstr,len,outstr;printf"%s\n",outstr;freeoutstr;outstr= NULL;}4.通过键盘输入一串小写字母a~z组成的字符串;请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串;压缩规则:1. 仅压缩连续重复出现的字符;比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符";例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"要求实现函数:void stringZipconst charpInputStr, long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void stringZipconst char p_str, long len,char p_outstr{intcount=1;forinti=0;i<len;i++{ifp_stri==p_stri+1{count++;}else{ifcount>1{p_outstr++= count +'0';p_outstr++=p_stri;}else{p_outstr++=p_stri;}count = 1;过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串;输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开;补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况;2. 若输入算式格式错误,输出结果为“0”;要求实现函数:void arithmeticconst charpInputStr, long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void arithmeticconst char input, longlen, char output{chars110;chars210;chars310;intcnt = 0;intlen_input=strleninput;forinti=0;i<len_input;++i{ifinputi==''cnt++;}ifcnt=2{output++= '0';output= '\0';return;}sscanfinput,"%s %s %s",s1,s2,s3; if strlens2=1||s20='+'&&s20='-' {output++= '0';output= '\0';return;}int len_s1=strlens1;fori=0;i<len_s1;i++{ifs1i<'0'||s1i>'9'{output++= '0';output= '\0';return;}}intlen_s3=strlens3;fori=0;i<len_s3;i++{ifs3i<'0'||s3i>'9' {output++= '0'; output= '\0'; return;}}int x = atois1;int y = atois3;ifs20=='+'{intresult = x+y; itoaresult,output,10; }elseifs20=='-'{intresult = x-y; itoaresult,output,10; }else{output++= '0';output= '\0';return;}}void main{charstr = {"10 - 23"};charoutstr10;intlen = strlenstr;arithmeticstr,len,outstr;printf"%s\n",str;printf"%s\n",outstr;}6.一组人n个,围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人约瑟夫环是一个数学的应用问题:已知n个人以编号1,2,3...n分别表示围坐在一张圆桌周围;从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列; include <>include<>include<>include<>typedef struct Node{intdata;structNode next;}LinkList;LinkList createint n{LinkListp,q,head;inti=1;p=LinkListmallocsizeofLinkList;p->data=i;head=p;fori=1;i<=n;i++{q=LinkListmallocsizeofLinkList;q->data=i+1;p->next=q;p=q;}p->next=head; 输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字可能不止一个,输出最后剩余数字个数;如输入“3,3,4,5,6,7,7”include<>include<>include<>void main{charstr100;printf"输入一组字符串:\n"; scanf"%s",&str;intlen=strlenstr;intarray100;intcount=0;forinti=0;i<len;i++{ifstri>='0'&&stri<='9' arraycount++=stri-'0';}arraycount='\0';intresult=count;intmin=array0;intmax=array0;forintj=0;j<count;j++{ifmax<arrayjmax=arrayj;elseifmin>arrayjmin=arrayj;}forintk=0;k<count;k++{ifarrayk==minresult--;ifarrayk==maxresult--;}printf"%d\n",result;}8.输入一组身高在170到190之间5个身高,比较身高差,选出身高差最小的两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出;如输入170 181173 186 190 输出170 173include<>include<>define N 5int main{intHeightN;intdmin;intH1,H2;inti,j,temp;printf"请输入一组身高在170到190之间的数据共5个:\n"; forintk=0;k<N;k++scanf"%d",&Heightk;printf"\n";fori=0;i<N;i++forj=1;j<N-i&&Heightj-1>Heightj;j++{temp=Heightj-1;Heightj-1=Heightj;Heightj=temp;}H1=Height0;H2=Height1;dmin=H2-H1;forintm=2;m<N;m++{ifHeightm-Heightm-1<=dmin{H1=Heightm-1;H2=Heightm;dmin=Heightm-Heightm-1;}}printf"身高差最小的两个身高为:\n";printf"%d,%d\n",H1,H2;return0;}9.删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数; include <>include <>include <>include <>int delete_sub_strconst char str,constchar sub_str,char result{assertstr= NULL && sub_str = NULL;constchar p,q;chart,temp;p= str;q= sub_str;t= result;intn,count = 0;n= strlenq;temp= char mallocn+1; memsettemp,0x00,n+1; whilep{memcpytemp,p,n; ifstrcmptemp,q== 0 {count++; memsettemp,0x00,n+1; p= p + n;}else{t= p;p++;t++; memsettemp,0x00,n+1; }}freetemp;returncount;}void main{chars100 = {‘\0’};intnum = delete_sub_str“123abc12de234fg1hi34j123k”,”123”,s;printf“Thenumber of sub_str is %d\r\n”,num;printf“Theresult string is %s\r\n”,s;}10. 要求编程实现上述高精度的十进制加法;要求实现函数:void add const char num1,const char num2, char result输入num1:字符串形式操作数1,如果操作数为负,则num10为符号位'-'num2:字符串形式操作数2,如果操作数为负,则num20为符号位'-'输出result:保存加法计算结果字符串,如果结果为负,则result0为符号位; include<>include<>include<>void movechar str, int length描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:1 及格线是10的倍数;2 保证至少有60%的学生及格;3 如果所有的学生都高于60分,则及格线为60分输入:输入10个整数,取值0~100输出:输出及格线,10的倍数include<>void bubblesortint arr{inti,j,temp;fori=0;i<10;i++forj=0;j<9-i&&arrj>arrj+1;j++ {temp=arrj;arrj=arrj+1;arrj+1=temp;}}int GetPassLineint a{bubblesorta;ifa0>=60return60;elsereturninta4/1010;}main{inta10={0};intresult;printf"请随机输入10个成绩0-100:\n";scanf"%d%d%d%d%d%d%d%d%d%d",&a0,&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8,&a9; printf"\n";result=GetPassLinea;printf"及格线为:%d\n",result;return1;}12.描述:一条长廊里依次装有n1 ≤ n ≤ 65535盏电灯,从头到尾编号1、2、3、…n-1、n;每盏电灯由一个拉线开关控制;开始,电灯全部关着;有n个学生从长廊穿过;第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n 的倍数的电灯的开关拉一下;n个学生按此规定走完后,长廊里电灯有几盏亮着;注:电灯数和学生数一致;输入:电灯的数量输出:亮着的电灯数量样例输入:3样例输出:1include<>define Max_Bubl_Num 65535int GetLightLampNumint n{intBublNumMax_Bubl_Num={0}; 描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的;经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示;编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量含输入的起点和终点,换乘站点只计算一次;地铁线A环线经过车站:A1 A2 A3 A4 A5 A6A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18地铁线B直线经过车站:B1 B2 B3 B4 B5 T1B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15输入:输入两个不同的站名输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次输入样例:A1 A3输出样例:3include<>include<string>include<queue>include<vector>using namespace std;define MAX 35define SUBWAY_A 20define SUBWAY_B 15typedef struct node{int adjvex;struct node next;}edgenode;typedef struct{char name10;bool flag;edgenode link;}vexnode;constcharsubway_name1SUBWAY_A10={"A1","A2","A3","A4","A5","A6","A7","A8","A9","T1 ","A10","A11","A12","A13","T2","A14","A15","A16","A17","A18"};constcharsubway_name2SUBWAY_B10={"B1","B2","B3","B4","B5","B6","B7","B8","B9","B1 0","B11","B12","B13","B14","B15"};void creatvexnode ga{int i;edgenode p;fori=0;i<MAX;i++{gai.link=NULL;gai.flag=true;ifi<SUBWAY_,subway_name1i;,subway_name2i-20;}ink=p;p=edgenodemallocsizeofedgenode; p->adjvex=i+1;p->next=NULL;gai.link->next=p;ifi==9{p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+4;p->next=NULL;gai.link->next->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+5;p->next=NULL;gai.link->next->next->next=p;}else ifi==14{p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+9;p->next=NULL;gai.link->next->next=p;p=edgenodemallocsizeofedgenode;p->adjvex=SUBWAY_A+10;p->next=NULL;gai.link->next->next->next=p;}}p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A-1;p->next=NULL;ga0.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=1;p->next=NULL;ga0.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A-2;p->next=NULL;gaSUBWAY_A-1.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=0;p->next=NULL;gaSUBWAY_A-1.link->next=p;ink=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+i+1;p->next=NULL;gai+SUBWAY_A.link->next=p;}p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+3;p->next=NULL;gaSUBWAY_A+4.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=9;p->next=NULL;gaSUBWAY_A+4.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=9;p->next=NULL;gaSUBWAY_A+5.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+6;p->next=NULL;gaSUBWAY_A+5.link->next=p;p=edgenodemallocsizeofedgenode;p->adjvex=SUBWAY_A+8;p->next=NULL;gaSUBWAY_A+9.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=14;p->next=NULL;gaSUBWAY_A+9.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=14;p->next=NULL;gaSUBWAY_A+10.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+11;p->next=NULL;gaSUBWAY_A+10.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+1;p->next=NULL;gaSUBWAY_A.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+SUBWAY_B-2; p->next=NULL;gaSUBWAY_A+SUBWAY_B-1.link=p; ame;edgenode s;s=gai.link;whiles=NULL{printf"->%s",gas->;s=s->next;}printf"\n";}}int main{vexnode gaMAX;creatga;int i;char str210;whilescanf"%s%s",str0,str1=EOF{ int temp=0;fori=0;i<MAX;i++{gai.flag=true;ifstrcmpstr0,temp=i;}queue<vexnode>q; gatemp;gatemp.flag=false;int count=0;int start=0;int end=1;bool find_flag=false;while{iffind_flag break;count++;printf"\n";printf"第%d层搜索:",count; int temp_end=end; whilestart<temp_end{ printf"%s",.name; ,str1{find_flag=true;break;}edgenode s;s=.link;whiles=NULL{ifgas->adjvex.flag{gas->adjvex;gas->adjvex.flag=false;end++;ame;}s=s->next;};start++;}printf"\n";}printf"%d\n",count;}return 0;}14. 字串转换问题描述:将输入的字符串字符串仅包含小写字母‘a’到‘z’,按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次;例如:aa 转换为bc,zz 转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算;要求实现函数:voidconvertchar input,char output输入char input , 输入的字符串输出char output ,输出的字符串返回无include<>include<>include<>void convertchar input,char output{ifinput==NULLreturn;chartemp='\0';intlen_input=strleninput;inti;intflag=0;fori=0;i<len_input;i++{ifinputi=temp{outputi=inputi-'a'+1%26+'a';temp=inputi;flag=1;}else{ifflag==1{outputi=inputi-'a'+2%26+'a'; temp=inputi;flag=0;}else{outputi=inputi-'a'+1%26+'a'; temp=inputi;flag=1;}}}outputi='\0';}void main{charinput="xyz"; charoutput256;在给定字符串中找出单词“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词;找到单词后,按照长度进行降序排序,排序时如果长度相同,则按出现的顺序进行排列,然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串;输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格;要求实现函数:void my_wordcharinput, char output输入char input, 输入的字符串输出char output,输出的字符串返回无include <>include <>include <>void my_wordchar input,charoutput{char p;char temp;char word10;int len_input=strleninput;int i,j;char except = ",";char blank = " ";i=0;for i=0;i<len_input;i++{if inputi<'A' || inputi>'Z'&&inputi<'a' ||inputi>'z' {inputi=',';}}j=0;/保存取出的单词/p= strtokinput,except;whileNULL=p{wordj++=p;p= strtokNULL,except;}printf"%s",wordi;/对单词按照长度降序排序,冒泡法/ for i=0;i<5;i++{for j=1;j<5-i;j++{ifstrlenwordj-1<strlenwordj{temp=wordj;wordj=wordj-1;wordj-1=temp;}}}/删除相同单词/{forj=i+1;j<5;j++{ifstrcmpwordi,wordj==0wordj="\0";}}/将单词连接起来输出/for j=0;j<5;j++{if 0==j{strncpy output,wordj,strlenwordj+1; }else{strcatoutput,blank;strcatoutput,wordj;}}return ;}int main{char input ="some local buses, some1234123drivers"; printf"筛选之前的字符串:%s\n",input;char output30;my_wordinput,output;printf"筛选之后的字符串:%s",output;printf"\n";return 0;}16. 数组中数字都两两相同,只有一个不同,找出该数字:int findUniqueint a, int len{int i = 1;int temp =a0;for; i <len; i++{temp= temp ^ ai;}printf"%d", temp;}17.题目二:数组中数字两两相同,有两个不同,找出这两个:include <>int a = {1,1,2,4,3,3,2,5};int findXorSumint a, int len{int i = 0;int temp =0;for; i <len; i++{temp= temp ^ ai;}return temp;}int findFirstBit1int n{int count =1;while n &1{n =n>>1;count++;}returncount;}int isBit1int a, int count{a= a >> count-1;returna & 1;}void findTwoUniqueint a, int len {int i = 0;int m = 0, n= 0;int temp =findXorSuma, len;int count =findFirstBit1temp;for; i <len; i++{ifisBit1ai,count{m= m ^ ai;}else{n= n ^ ai;}}printf"%d,%d", m, n;}int main{findTwoUniquea,8;}18.链表翻转;给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现思想:采用遍历链表,分成length/k组,对每组进行逆转,逆转的同时要将逆转后的尾和头连接起来链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g include <>include <>include <>typedef struct node{charval;structnode pNext;}Node;Node CreateListint n;void TraverslistNode pHead;Node TransNeighborNode pHead;int main{NodepHead = CreateList7;printf"beforetransform\n";TraverslistpHead;TransNeighborpHead;printf"\naftertransform\n";TraverslistpHead;getchar;return1;输入一串字符串,其中有普通的字符与括号组成包括‘’、‘’、‘’,'',要求验证括号是否匹配,如果匹配则输出0、否则输出1.include<>include<>入一行数字:1234235645875186523在输入第二行:23将第一行中含有第二行中“23”的数输出并排序结果即:123423186523include<>define M 20int main{int aM;int i,j,s,temp;int sortM,t=0;char c=' ';i=0;whilec='\n'{scanf"%d%c",&temp,&c;ai++=temp;scanf"%d",&s; forj=0;j<i;j++ {temp=aj; iftemp%100==s {sortt++=aj;}elsetemp/=10;}fori=0;i<t-1;i++ forj=0;j<t-i-1;j++ {ifsortj>sortj+1 {temp=sortj+1; sortj+1=sortj; sortj=temp;}}fori=0;i<t;i++printf"%d",sorti;printf"\n";return 0;}22输入m个字符串和一个整数n,把字符串M化成以N为单位的段,不足的位数用0补齐;如n=8m=9,include<>include<>int main{char c200={'\0'};scanf"%s",&c;int n,i,j;int len=strlenc;scanf"%d",&n;fori=1;i<=len;i++{j=i%n;printf"%c",ci-1;ifj==0printf"\n";}ifj=0fori=j+1;i<=n;i++printf"0";return 0;}23将电话号码onetwo;;;ninezero翻译成12;;90中间会有double例如输入:OneTwoThree输出:123输入:OneTwoDoubleTwo输出:1222输入:1Two2 输出:ERROR输入:DoubleDoubleTwo 输出:ERROR有空格,非法字符,两个Double相连,Double位于最后一个单词都错误include<>include<>include<>int main{chara1111={"zero","one","two","three","four","five","six","seven","eight","nine","dou ble"};char temp11, c=' ';int i,j,f,d=0;whilec='\n'{scanf"%s%c",&temp,&c;f=0;forj=0;j<11;j++{ifstrcmptemp,aj&&j<10 {printf"%d",j;f=1;ifd==1{printf"%d",j;d=0;}}elseifstrcmptemp,aj&&j==10 {d=1;f=1;}}iff==0break;}ifd==1||f==0printf"error\n";printf"\n";return 0;}24.将整数倒序输出,剔除重复数据include<>include<>include<>include<>int main{charinput=charmallocsizeofchar; scanf"%s",input;inta10={0},i,flag=0,flag1=0;int len=strleninput;ifinput0=='-'{flag=1;fori=0;i<len;i++inputi=inputi+1;}intlen1=strleninput;int n50,temp;int count=0;fori=0;i<len1;i++{temp=inputi-'0'; ifatemp==0{ncount++=temp; atemp=1;}}ncount='\0';ifflag==1 printf"-";forintii=count-1;ii>=0;ii-- {ifnii=0||flag1=0{printf"%d",nii;flag1=1;}}printf"\n";return 0;}25.编程的时候,if条件里面的“”、“”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确;同时输出语句中出现的左括号和右括号数量,如ifa==1&&b==1是正确的,而ifa==1&&b==1是错误的;注意if 语句的最外面至少有一对括号;提示:用堆栈来做;输入:ifa==1&&b==1输出:RIGTH 3 3输入:ifa==1&&b==1输出:WRONG 3 4include<>include<>int main{char s800={'\0'};scanf"%s",&s;.alen-1voidarray_iterateint len, int input_array, int m, int output_array {int startPos=0;int outPos;int nIter=len-1;int num=len;for; nIter>=0; nIter--{outPos=m+startPos-1%num;m=input_arrayoutPos;startPos=outPos;printf"outPos is %d, new m is%d\n", outPos, m;output_arraylen-nIter-1=input_arrayoutPos;forint i=outPos; i<num-1; i++input_arrayi=input_arrayi+1;num--;print_arraynum, input_array;}}voidmain{int input_array={3,1,2,4};int output_array4={0};array_iterate4, input_array, 7,output_array; print_array4, output_array;}27.统计数字出现的次数,最大次数的统计出来举例:输出:3,6include<>include<>include<>int main{inta10={0};intlen=strlennum;inti,j,temp,count=0,maxnum=0;printf"%d\n",len;fori=0;i<len;i++{temp=numi-'0';atemp++;}inttemp1=a0;forj=0;j<10;j++{ifaj=0{count++;temp1=temp1>ajtemp1:aj; printf"%d%d\n",aj,j;}}printf"数字出现次数为:%d\n",count; printf"最大次数为:%d\n",temp1; return0;}28. .字符串首字母转换成大写举例:输入:this is a book返回:This Is A Bookinclude<>include<>include<>int main{charinput="this is a book"; charoutput256={'\0'};int i,len;len=strleninput;printf"变换前的字符串为:%s\n",input; fori=0;i<len;i++{ifinput0=''input0-=32;ifinputi==''inputi+1-=32;outputi=inputi;}printf"变换后的字符串为:%s\n",output; }29.子串分离题目描述:。
华为硬件机试题库
华为硬件机试题目(2016版本)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位二进制补码是 11 11_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分)?3?3?4?D.不变10.(单选题)8086CPU内部包括哪些单元(4分)?,EU?,BIU?,BIU?,EU,BIU11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分)?A.带阻滤波器?B.带通滤波器?C.低通滤波器?D.高通滤波器12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分)?需要定时刷新,否则数据会丢失?使用内部电容来保存信息?的集成度高于DRAM?D.只要不掉点,DRAM内的数据不会丢失13.(单选题)在RS232串口中,采用哪一种校验方式:(4分)?校验?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分)?Ω,8Ω?Ω,10Ω?Ω,10Ω?Ω,16Ω19.(单选题)关于PCI总线的描述,错误的是:(4分)?总线是一个16位宽的总线?的地址线与数据线是复用的?是一种独立于处理器的总线标准,可以支持多种处理器?支持即插即用功能20.(单选题)中继器、以太网交换机、路由器分别工作在OSI模型的哪位层次上:(4分)?A.物理层、链路层、网络层?B.物理层、网络层、链路层?C.物理层、链路层、传输层?D.链路层、链路层、网络层21.(单选题)某电路,对100KHz以下低频信号干扰敏感,为减少干扰,应采用()滤波器。
【试题】从网上整理的华为机试题目
【关键字】试题一、华为机试——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、字符串问题∙问题描述:把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉,输出新字符串。
∙要求实现函数: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)单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);仅大小写不同的单词算同一个单词;如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。
华为机试题汇总作者
2016校招华为提前批机试(2015年8月13日上午)今年的华为机试跟以往的有所不同,以往机试题侧重于字符串处理,分数权重为:60、100、160。
今年貌似改革了,题目都偏向数学逻辑类。
华为的名言“胜则举杯相庆,败则拼死相救”说话的人来头不小:任正非,顺带说了很欣赏华为的狼性文化,团队精神。
1、猴子吃桃题目描述:猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,又多吃了一个。
第二天早上有奖剩下的桃子吃掉一般,又多吃了一个。
以后每天早上都吃了前一天剩下的一般零一个。
到第m天早上再吃时,只剩下一个桃子。
求第一天共摘了多少?输入:mwield天数,即第m早上再想吃时,只剩下一个桃子。
输出:第一天共摘了多少个桃子。
样例输入:2样例输出:4答题思路:从第m天推起,第m天为1个;第m-1天为(1+1)*2个;第m-2天为……以此反推,for循环就可以搞定。
2、海滩上有多少个桃子题目描述:海滩上有一堆桃子,只猴子来分。
第一只猴子把这堆桃平均分为m份,多了一个,把多的一个扔到海里,拿走了一份。
第二只猴子把剩下的桃子又平均分为m份,多了一个,丢入海里,拿走了一份……第三第四……第m只猴字都这样操作,请问海滩上原来最少有多少个桃子?输入:猴子个数m(3<=m<=9)输出:原来最少有多少个桃子样例输入:3样例输出:25答题思路:楼主是暴力求解的,所以效率比较低,i从第1开始,认为最后剩i个,再网上推算,能否被m整除……(最后有一个测试用例没过,仔细想来应该是m=9时,溢出了,因为楼主是先乘后除的,所以问题应该出在这,以后牢记经验了)。
回来后,差了一下猴子分桃这个经典案例,这位大神博客中有写得比较详细和巧妙:/hackbuteer1/article/details/6914395经验教训:要注意大数问题,像这种情况,long long比较保险一点,另外,做乘除时,能先除的先除,乘放在后面,避免溢出问题!!!!!2、自动售货系统题目太长了,直接上图好了答题思路:题目很长,但不算难,捋顺了逻辑就好了。
华为考试题库及答案
华为考试题库及答案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
华为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位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
华为机试题库及答案
华为机试题库及答案华为是全球领先的信息与通信技术(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(传输控制协议)提供可靠的、面向连接的数据传输服务,确保数据的完整性和有序性,适用于对数据传输要求较高的场景,如文件传输、网页加载。
华为机考试题+答案
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 •第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#i nclude<stdio.h>mai n(){intn um[50]={0};in ti, n;printf("请输入整型数组的长度(1~50):");scan f("%d",&n);printf("请输入整型数组的元素:");for(i=0;i <n ;i++){sca nf("%d",&n um[i]);}intmin_num=num [0];in tmax_ num=nu m[0];for(i ntj=0;j< n;j++){if(max_ numvnu m[j])max_num=nu m[j];elseif(min_ num>nu m[j])min_num=nu m[j];}in tsum=min_nu m+max_ num;printf("数组中最大与最小值之和:%d\n",sum);return。
;}2. 求两个长长整型的数据的和并输出,例如输入1233333333333333.OO3111111111111111111111111。
O,则输出。
OOO#i nclude<stdio.h>#i ncludevstri ng.h>#i nclude<malloc.h>mai n(){char* nu ml,* num2; //两个长长整型数据char*sum;// in ttemp;int Ien_num1,len_num2; //两个长长整型数据的长度in tle n_ max,le n_min;nu m1=(char*)malloc(sizeof(char));nu m2=(char*)malloc(sizeof(char));printf("输入两个长长整型数据:");scan f("%s", nu m1);printf("输入两个长长整型数据:");scan f("%s", nu m2);len_nu m仁strle n(nu m1);len_nu m2=strle n(nu m2);len_ max=(le n_nu m1>=le n_nu m2)?le n_nu m1:le n_nu m2;len_ mi n=(le n_nu m1<=le n_nu m2)?le n_nu m1:le n_nu m2;int len _max1=le n_max;sum=(char*)malloc(sizeof(char)*le n_max);memset(sum,OxOO,len_max+1);〃切忌初始化for(;le n_nu m1> 0&&le n_nu m2>0;le n_nu m1--,le n_nu m2--){sum[len_max--]=(( nu m1[len_num1-1]-'0')+( nu m2[len_num2-1]-'0'));}if(len_num1>0){sum[le n_max--]=nu m1[le n_nu m1- 1 ]-'0';len_nu m1--;}if(len_num2>0){sum[le n_max--]=nu m1[le n_nu m2- 1]-'0';len_nu m2--;}for(intj=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)*le n_ maxi);j=0;while(sum[j]==0) // 跳出头部0 元素j++;for(i nt m=0;m<le n_max1;j++,m++)outsum[m]=sum[j]+'0';outsum[m]='\0';printf("输出两长长整型数据之和:%s\n",outsum);return。
;}#i nclude <stdio.h>#i nclude<stri ng.h>#i nclude<malloc.h>void stri ngFilter(c onst char *p_str, l on gle n, char *p_outstr){in tarray[256]={0};const char *tmp = p_str;for(i nt j=O;j<le n;j++){if(array[tmp[j]]==O)*p_outst r++=tmp[j];array[tmp[j]]++;}*p_outstr= '\0';}void mai n(){char *str = "cccddecc";in tle n = strle n(str);char* outstr = (char *)malloc(le n*sizeof(char));stri ngFilter(str,le n, outstr);prin tf("%s\n",outstr);free(outstr);outstr= NULL;}#i nclude <stdio.h>#i nclude<stri ng.h>#i nclude<malloc.h>void stri ngZip(c onst char *p_str, l ong len, char *p_outstr) { in tco un t=1;for(i nti=0;i<le n;i++){if(P_str[i]==p_str[i+1]){coun t++;}else{if(cou nt>1){*p_outstr++= count +'0';*p_outst ^+=p_str[i];}else{*p_outst ^+=p_str[i];}cou nt = 1;//注意其位置}}*p_outstr= '\0';}void mai n(){char*str = "cccddecc";prin tf("压缩之前的字符串为: %s\n",str);in tle n = strle n(str);char* outstr = (char*)malloc(le n*sizeof(char));stri ngZip(str,le n, outstr);printf("压缩之后的字符串为:%s\n",outstr);free(outstr);outstr= NULL;#i nclude <stdio.h>#i nclude<stri ng.h>#i nclude<stdlib.h>void arithmetic(c onst char *in put, l on gle n, char *output) {chars1[10];chars2[10];chars3[10];intent = 0;in tle n_in put=strle n(i nput);for(i nti=0;i<le n_in put;++i){if(in put[i]=='')cn t++;}if(cnt!=2){*output++= 'O';*output= '\O';return;}sscanf(input,"%s %s %s",s1,s2,s3);if(strlen(s2)!=1| |(s2[0]!='+'&&s2[0]!='-')) { *output++= '0';*output= '\0'; return;}int len _s1=strle n( s1);for(i=0;i<le n_s1;i++){if(s1[i]v'0'||s1[i]>'9'){*output++= '0';*output= '\0';return;}}in tle n_s3=strle n( s3);for(i=0;i<le n_s3;i++){if(s3[i]v'0'||s3[i]>'9'){*output++= '0';*output= '\0';return;int x = atoi(sl);int y = atoi(s3); if(s2[0]=='+') {in tresult = x+y; itoa(result,output,10); }elseif(s2[0]=='-'){in tresult = x-y; itoa(result,output,10);}else{*output++= '0'; *output= '\0'; return;} }void mai n(){charstr[] = {"10 - 23"}; charoutstr[10];in tle n = strle n(str); arithmetic(str,le n, outstr); prin tf("%s\n",str);prin tf("%s\n",outstr);6. —组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2, 3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。