华为机试试题汇总
华为测试工程师机试真题
华为测试工程师机试题目汇总-附答案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、华为公司的全称为()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.字符去重,例如输入字符串:“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)组成的字符串。
华为机试试题汇总
1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<stdio.h>main(){intnum[50]={0};inti,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for(i=0;i<n;i++){scanf("%d",&num[i]);}intmin_num=num[0];intmax_num=num[0];for(intj=0;j<n;j++){if(max_num<num[j])max_num=num[j];elseif(min_num>num[j])min_num=num[j];}intsum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333。
3111111111111111111111111.。
,则输出。
#include<stdio.h>#include<string.h>#include<malloc.h>main(){char*num1,*num2; //两个长长整型数据char*sum;// inttemp;int len_num1,len_num2; // 两个长长整型数据的长度intlen_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,0x00,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(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)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)outsum[m]=sum[j]+'0';outsum[m]='\0';printf("输出两长长整型数据之和:%s\n",outsum);return0;}3.通过键盘输入一串小写字母(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.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。
华为_机考_答案(精选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.若相交,将相交面积表示出来,并输出结果最后发现貌似判断相交的思路会影响相交求面积的思路(正所谓数学题多问,第一问为第二问做铺垫一样)由于我的判相交思路不好影响了第二问,导致这一题我没做出来。
华为计算机原理面试题目(3篇)
第1篇一、基础知识部分1. 请简述计算机系统的组成及其功能。
2. 计算机硬件系统主要包括哪些部分?请简要说明其作用。
3. 什么是冯·诺伊曼体系结构?其特点有哪些?4. 请解释什么是总线?总线的主要类型有哪些?5. 计算机的存储系统分为哪几个层次?每个层次的作用是什么?6. 请简述CPU的组成及其工作原理。
7. 什么是流水线技术?其优点是什么?8. 什么是虚拟存储器?其工作原理是什么?9. 什么是Cache?Cache的作用是什么?10. 请简述I/O设备的工作原理。
二、操作系统部分1. 请简述操作系统的基本功能。
2. 什么是进程?进程与程序有何区别?3. 进程调度算法有哪些?请分别说明其优缺点。
4. 请简述死锁的概念及产生原因。
5. 什么是内存管理?内存管理的主要任务有哪些?6. 请简述文件系统的组成及其功能。
7. 什么是磁盘调度算法?请分别说明其优缺点。
8. 请简述网络操作系统的基本功能。
9. 什么是分布式操作系统?其特点有哪些?10. 请简述实时操作系统的特点。
三、计算机网络部分1. 请简述计算机网络的基本功能。
2. 什么是OSI七层模型?请分别说明每一层的作用。
3. 什么是TCP/IP四层模型?请分别说明每一层的作用。
4. 请简述IP地址的分类及其作用。
5. 什么是子网掩码?其作用是什么?6. 什么是DNS?DNS的工作原理是什么?7. 什么是HTTP协议?HTTP协议的工作原理是什么?8. 请简述TCP和UDP的区别。
9. 什么是路由器?路由器的作用是什么?10. 什么是交换机?交换机的作用是什么?四、数据结构与算法部分1. 请简述数据结构的基本概念。
2. 请简述线性表、栈、队列、链表、树等数据结构的特点及应用场景。
3. 请简述排序算法的几种常见类型及其特点。
4. 请简述查找算法的几种常见类型及其特点。
5. 请简述贪心算法、分治算法、动态规划等算法的特点及应用场景。
6. 请简述复杂度分析的基本方法。
华为机试题及答案
华为机试题及答案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)组成的字符串。
华为机考试题+答案
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、字符串问题∙问题描述:把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉,输出新字符串。
∙要求实现函数: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)单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);仅大小写不同的单词算同一个单词;如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。
华为技术有限公司面试试题
华为技术有限公司面试试题(C语言) (冯兴军)一、单项选择题(每题3分,共30分)1、调用函数时的实参是数组名时(如func(A),A为数组),传递给形参实际上是:A)数组的首地址 B)数组的第一个元素C)数组中的全部元素的值 D)数组元素的个数2、有如下定义:Union FLAG{Struct{Unsigned char Mode;};Unsigned short usVal;}myFlag;那么myFlag占用内存的大小为:()A)8位 B)16位 C)24位 D)32位3、有如下定义:int(*ptr)(); ,以下叙述中正确的是()A) ptr是指向一维数组的指针变量。
B) ptr是指向int型数据的指针变量。
C) ptr是指向函数的指针,该函数返回一个int型数据。
D) ptr是一个函数名,该函数的返回值是指向int型数据的指针。
4、有以下程序段int x=4;do{Printf(“%d,”,x--);}while(--x);其输出结果是:()A)3,0 B)4,1 C)4,2 D)死循环5、有如下程序段Unsigned char a[5];Unsigned char *p,*q;a [0] = 1;a[1] = 2;a[2] = 3;a[3] = 4;a[4] = 5;p = a;q = &a[3];请问a[q-p] =( )A)5 B)1 C)2 D)46、关于静态变量,下面说法不正确的有:()A)静态变量在堆栈中分配;B)静态变量的作用域一定是局部的,例如在一个文件内或一个函数内;C)静态变量的生命周期与其所在部分的代码等长;D)静态变量可分为静态局部变量和静态全局变量;E)静态变量存在于数据段中;7、设有以下宏定义:#idefine N 4#define Y(n) ((N+1)*n)则执行语句:Y(5+1)为()A)30 B)28 C)26 D)248、对栈S进行下列操作:push(1),push(2),pop(),pop()。
华为考试题库及答案
华为考试题库及答案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位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
华为校园招聘机考试题大全
1 华为校园招聘机考试题总结(厦门大学)1、删除子串只假如原串中有同样的子串就删掉不论有多少个返回子串个数。
#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>int delete_sub_str(const char *str,const char *sub_str,char *result){assert(str != NULL && sub_str != NULL);const char *p,*q;char *t,*temp;p = str;q = sub_str;t = result;int n,count = 0;n = strlen(q);tmep = (char *)malloc(n+1);memset(temp,0x00,n+1);while(*p){memcpy(temp,p,n);if(strcmp(temp,q) == 0 ){count++;memset(temp;0x00,n+1);p = p + n;}else{*t = *p;p++;t++;memset(temp,0x00,n+1);}}free(temp);return count;}int main(){char s[100] = {‘\0’};int num = delete_sub_str(“123abc12de234fg1hi34j123k”,”123”,s);printf(“The number of sub_str is %d\r\n”,num);printf(“The result string is %s\r\n”,s);}2、约瑟夫环是一个数学的应用问题已知n个人以编号12 3...n分别表示围坐在一张圆桌四周。
从编号为k的人开始报数数到m的那个人出列他的下一个人又从1开始报数数到m的那个人又出列依此规律重复下去直到圆桌四周的人所有出列。
华为机试题库及答案
华为机试题库及答案华为是全球领先的信息与通信技术(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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<stdio.h>main(){intnum[50]={0};inti,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for(i=0;i<n;i++){scanf("%d",&num[i]);}intmin_num=num[0];intmax_num=num[0];for(intj=0;j<n;j++){if(max_num<num[j])max_num=num[j];elseif(min_num>num[j])min_num=num[j];}intsum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333。
3111111111111111111111111.。
,则输出。
#include<stdio.h>#include<string.h>#include<malloc.h>main(){char*num1,*num2; //两个长长整型数据char*sum;// inttemp;int len_num1,len_num2; // 两个长长整型数据的长度intlen_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,0x00,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(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)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)outsum[m]=sum[j]+'0';outsum[m]='\0';printf("输出两长长整型数据之和:%s\n",outsum);return0;}3.通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<malloc.h>void stringFilter(const char *p_str, longlen, char *p_outstr){intarray[256]={0};const char *tmp = p_str;for(int j=0;j<len;j++){if(array[tmp[j]]==0)*p_outstr++=tmp[j];array[tmp[j]]++;}*p_outstr= '\0';}void main(){char *str = "cccddecc";intlen = strlen(str);char* outstr = (char *)malloc(len*sizeof(char));stringFilter(str,len,outstr);printf("%s\n",outstr);free(outstr);outstr= NULL;}4.通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:1. 仅压缩连续重复出现的字符。
比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符"。
例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"要求实现函数:void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr);【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<malloc.h>void stringZip(const char *p_str, long len,char *p_outstr){intcount=1;for(inti=0;i<len;i++){if(p_str[i]==p_str[i+1]){count++;}else{if(count>1){*p_outstr++= count +'0';*p_outstr++=p_str[i];}else{*p_outstr++=p_str[i];}count = 1;//注意其位置}}*p_outstr= '\0';}void main(){char*str = "cccddecc";printf("压缩之前的字符串为:%s\n",str);intlen = strlen(str);char* outstr = (char*)malloc(len*sizeof(char));stringZip(str,len,outstr);printf("压缩之后的字符串为:%s\n",outstr);free(outstr);outstr= NULL;}5.通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
要求实现函数:void arithmetic(const char*pInputStr, long lInputLen, char *pOutputStr);【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include <stdio.h>#include<string.h>#include<stdlib.h>void arithmetic(const char *input, longlen, char *output){chars1[10];chars2[10];chars3[10];intcnt = 0;intlen_input=strlen(input);for(inti=0;i<len_input;++i){if(input[i]=='')cnt++;}if(cnt!=2){*output++= '0';*output= '\0';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=strlen(s1);for(i=0;i<len_s1;i++){if(s1[i]<'0'||s1[i]>'9'){*output++= '0';*output= '\0';return;}}intlen_s3=strlen(s3);for(i=0;i<len_s3;i++){if(s3[i]<'0'||s3[i]>'9'){*output++= '0';*output= '\0';return;}}int x = atoi(s1);int y = atoi(s3);if(s2[0]=='+'){intresult = x+y;itoa(result,output,10);}elseif(s2[0]=='-'){intresult = x-y;itoa(result,output,10);}else{*output++= '0';*output= '\0';return;}}void main(){charstr[] = {"10 - 23"};charoutstr[10];intlen = strlen(str);arithmetic(str,len,outstr);printf("%s\n",str);printf("%s\n",outstr);}6.一组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。