2016届 华为公司校园招聘华为软件开发工程师 提前批上机笔试题
华为校园招聘上机题
![华为校园招聘上机题](https://img.taocdn.com/s3/m/47b647506137ee06eef9184a.png)
目录样题-初级题:从考试成绩中划出及格线 (2)样题-中级题:亮着电灯的盏数 (2)样题-高级题:地铁换乘 (3)8.29去掉最大值、最小值之后剩下的个数 (3)8.29从5个人中选取2个人作为礼仪 (4)8.29验证括号是否匹配 (5)8.31回文数 (5)8.31将第一行中含有第二行中“23”的数输出并排序 (6)8.31翻译电话号码 (6)9.1.AM 将整数倒序输出,剔除重复数据 (7)9.1.AM 大数相减 (8)9.1.AM 判断if语句括号是否合法 (8)9.1.PM (8)9.1.PM (9)9.1.PM (9)样题-初级题:从考试成绩中划出及格线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、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。
华为校园招聘软件工程师笔试题
![华为校园招聘软件工程师笔试题](https://img.taocdn.com/s3/m/decf2725773231126edb6f1aff00bed5b9f3737f.png)
一、判断题〔对的写 T,错的写 F 并说明原因,每题 4 分,共 20 分〕1、有数组定义 int a[2][2]={{1},{2,3}};那末 a[0][1]的值为 0。
〔〕2、int (*ptr) (),那末 ptr 是一维数组的名字。
〔〕3、指针在任何情况下都可发展>, <, >=, <=, = =运算。
〔〕4、switch(c) 语句中 c 可以是 int, long, char, float, unsigned int 类型。
〔〕5、#define print(x) printf("the no, "#x",is ")二、填空题〔共 30 分〕1、在 windows 下,写出运行结果,每空 2 分,共 10 分。
char str[ ]= "Hello" ;char *p=str;int n=10;sizeof(str)=( )sizeof(p)=( )sizeof(n)=( )void func(char str[100]){ }sizeof(str)=( )2、void setmemory(char **p, int num){ *p=(char *) malloc(num);}void test(void){ char *str=NULL;getmemory(&str,100);strcpy(str,"hello");printf(str);}运行 test 函数有什么结果?〔〕10 分3、设 int arr[]={6,7,8,9,10};int *ptr=arr;(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr));( ) 10 分二、编程题〔第一小题 20,第二小题 30 分〕1、不使用库函数,编写函数 int strcmp(char *source, char *dest)相等返回 0,不等返回-1;2、写一函数 int fun(char *p)判断一字符串是否为回文,是返回1,不是返回 0,出错返回-1〔1〕什么是预编译,何时需要预编译:答案:1、总是使用不时常改动的大型代码体。
华为2016校园招聘上机笔试题及答案
![华为2016校园招聘上机笔试题及答案](https://img.taocdn.com/s3/m/e3c9fd3b0b4e767f5acfceb7.png)
然后对每一个小块,我们除了改掉相应位置的值,还要额外记录一下整个小块的最大值。 如果我更新的时候,那个小块的最大值增大,那很简单,最大值也增大了。 如果把最大值改小了呢?为了正确性,只能把整个小块扫一遍,重新算出最大值了。 所以,修改的复杂度是 O(sqrt(n)) 现在看查询。我们要充分利用分小块以后的信息。 比如要查询 2 到 9 的最大值。按之前最朴素的暴力的做法,我要访问 2、3、4、5、6、7、8、9 现在有小块的最大值信息了,我只要判断每个小块是否在查询区间内,不在的没用,一部分在的,就暴力查找,如果是完整在查询区间内的,我们就利 用之前算好的这个小块内的最大值。 所以,分块的情况下,查询 2 到 9 的最大值,需要看看 2、3,以及 4~6 的最大值,7~9 的最大值。 很容易证明,查询的复杂度是 O(sqrt(n))的(最坏是 sqrt(n)个块全部要用,左右 2 边只盖住 sqrt(n)-1 个数,要暴力遍历过去) //TODO:在这里补上分块法的代码
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 先来说说这题的 3 种做法: 最简单的就是暴力了。每次查询直接做。 修改复杂度 O(1),查询复杂度 O(N)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
if ( L <= m ) lans=querymax ( L , R , p << 1 , l , m ) ; if ( m < R ) rans=querymax ( L , R , p << 1 | 1 , m + 1 , r ) ; if(lans==-1)return rans; if(rans==-1)return lans; return max(lans,rans); } void update(int idx,int value,int p,int l,int r){ if(l==r&&l==idx){ maxarr[p]=value; return; } int m = ( l + r ) >> 1 ; if ( idx <= m ) update( idx, value, p << 1, l, m ); if ( m < idx ) update( idx, value, p << 1|1, m+1, r ); maxarr[p]=max(maxarr[p<<1],maxarr[p<<1|1]); } int main(){ int n,m; while(~scanf("%d%d",&n,&m)){ for(int i=1;i<=n;i++){ scanf("%d",&data[i]); } build(1,1,n); char order;
华为软件测试工程师笔试题一
![华为软件测试工程师笔试题一](https://img.taocdn.com/s3/m/af5a9867793e0912a21614791711cc7931b77827.png)
华为软件测试工程师笔试题一华为软件测试工程师笔试题一1:请你分别划OSI的七层网络结构图,和TCp/Ip的五层结构图?OSI的七层网络结构图,和TCp/Ip的五层结构图OSIOSI 是Open System Interconnect的缩写,意为开放式系统互联。
在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。
为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于 1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。
这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(presen tation Layer)和应用层(Application Layer)。
第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。
每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。
当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。
物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。
总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。
OSI参考模型的各个层次的划分遵循下列原则:1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。
华为校园招聘上机笔试题
![华为校园招聘上机笔试题](https://img.taocdn.com/s3/m/300a291504a1b0717ed5ddd7.png)
华为校园招聘上机笔试题华为校园招聘上机笔试题上机时间两小时,3道题1 字串转换问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。
例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:void convert(char *input,char* output)【输入】 char *input , 输入的字符串【输出】 char *output ,输出的`字符串【返回】无示例输入:char*input="abcd"输出:char*output="bcde"输入:char*input="abbbcd"输出:char*output="bcdcde"void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。
则按第一次出现算{output[i]=(input[i]-'a'+1)%26+'a';c=output[i];tag=1;}}}}void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。
华为上机考试题
![华为上机考试题](https://img.taocdn.com/s3/m/0a9b6476571252d380eb6294dd88d0d233d43cde.png)
华为上机考试题2016年华为上机考试题本文为大家分享的是2016最新的华为认证上机模拟考试题,希望对大家的复习有所帮助!1 (1) 字母大小写反转这到题没什么可说的,只是我很久没写这样要IO输入输出的代码,当时看到华为的提示纸条上写着“只能使用stdin方式输入”,还愣了一会:一定是我打开方式不对,什么时候有了一个stdin的输入函数?难道我又学艺不精了……后面才反应过来,直接按英文字面意思理解为“只能使用标准输入方式”就好了。
好了,言归正传,回到这道题,至少可以用以下两种方式:C++ STL库string中有isupper ,islower ,toupper ,tolower 函数通过 +/- ('a'-'A'+0)(2) n个人围成一圈,从第1个人开始报数,每报到第m个人,则其出局,求最后出局的人的初始序号。
第1种方法,我当时是用了个状态表来记录这人有没有出局,没出局则报数计数器加1并玩下走,碰到第m个报数号则更新状态为已出局,碰到队伍最末则重新移动到队首。
#include#define N 4#define M 3using namespace std;int *man = NULL;int JosephusSol_statusTab(int n,int m){int sn=0 , pos = 0 ,loop_pos=0;do{if( man[pos] == 0 ){//此人未出局loop_pos++;if(loop_pos == m){//找到一轮报数的出局者sn++;man[pos] = sn ; // 标记出局序号loop_pos = 0;}}pos ++ ;if(pos==n)pos = 0;}while(sn!=n);return pos;}int main(){int sn=0 , pos = 0 ,loop_pos=0;man = new int [N];for(int i=0;iman[i] = 0;pos = JosephusSol_statusTab(N,M);cout << pos <if(man != 0)delete [] man;return 0;}第2种方法是双向链表,技术面面试的时候,面试官就考了我这一题,在纸上快速写代码的能力还是有所欠缺。
华为公司应聘程序员上机考试题
![华为公司应聘程序员上机考试题](https://img.taocdn.com/s3/m/520013600b1c59eef8c7b434.png)
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<iostream>#include<cstdlib>#include<string.h>using namespace std;//删除指定的子字符串char* str_del(char* str,int pos,int length){for(int i=pos;i<(strlen(str)-length);i++){str[i] = str[i+length];}for(int i=(strlen(str)-length);i<strlen(str);i++){str[i] = '\0';}return str;}//从原串中获得子串char * get_sub_str(const char* str,int at,int length){char *res = new char[length];for(int i=at,j=0;i<at+length;i++,j++){res[j] = str[i];}return res;}int delete_sub_str(const char *str, const char *sub_str, char *&result_str) {int sub_len = strlen(sub_str);int str_len = strlen(str);int pos = 0;int del_num = 0;char* substr_instr;result_str = new char[sizeof(str)];strcpy(result_str,str);for(;pos<str_len-sub_len;pos++){substr_instr = get_sub_str(result_str,pos,sub_len);if(strcmp(substr_instr,sub_str) == 0){del_num++;result_str = str_del(result_str,pos,sub_len);}}return del_num;}int main(){char* str = "zhushijie";char* sub_str = "shi";char* res;cout<<"Delete num "<<delete_sub_str(str,sub_str,res)<<endl;cout<<res<<endl;return 0;}。
华为笔试试题软件工程试题及答案
![华为笔试试题软件工程试题及答案](https://img.taocdn.com/s3/m/b748c87a9b89680202d8256b.png)
z=3, x=85, 83, ..., 1
z=4, x=80, 78, ..., 0
......
z=19, x=5, 3, 1
z=20, x=0
因此,组合总数为 100 以内的偶数+95 以内的奇数+90 以内的偶
数+...+5 以内的奇数+1,
即
为
:
(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)
华为笔试试题软件工程试题及答案
1.static 有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中 维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以 被模块内所用函数访问,但不能被模块外其它函数访问。它是一 个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其 它函数调用。那就是,这个函数被限制在声明它的模块的本地范 围内使用 2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 3.描述实时系统的基本特性在特定时间内完成特定的任务,实时 性与可靠性。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区 别? 全局变量储存在静态数据库,局部变量在堆栈。 5.什么是平衡二叉树? 左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大 于 1。
struct stu{
char name[20];
char sex;
2016华为上机试题汇总
![2016华为上机试题汇总](https://img.taocdn.com/s3/m/ef2a12fc81c758f5f71f6710.png)
样例输入:
7
1 2 3 2 1 3 2
样例输出:
2
8、洞穴逃生
描述:
精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴。精灵王子的跑步速度为17m/s,以这样的速度可能是无法逃出洞穴的。庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。精灵王子的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。
1、置位比特位置查找
描述:
输入一个十进制的正整数,从低位开始查找,找到第一个置位(1)比特的位置
按照如下规则对正整数进行置位比特的查找:
1.当查找失败时,比如输入正整数0,返回-1
2.当查找成功时,返回该比特的位置
例子:
比如如入12,二进制表示是0000000000001100,则第一个置位比特为2
5,6
5,8
5,9
6,7
6,8
6,9
7,9
10,7
End
样例输出:
4
7、小明的筷子
描述:
小明是个马大哈,某天他到超市买了若干双筷子(小于20)
筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根
请你用程序帮他找出漏掉的筷子是多长的。
输入:
第一行:非负的整数,剩下的筷子的根数;例如:7
countN1
call
quit
样例输出:
1
2
3
vip4
4
1
vip4
3、成都麻将胡牌规则
描述:
说起麻将,那可是川渝市民的最爱,无论亲朋好友聚会,还是业务谈判,总是少不了麻将的声音。
华为笔试题 2016华为软件测试笔试题及答案05-27一、判断题1.软
![华为笔试题 2016华为软件测试笔试题及答案05-27一、判断题1.软](https://img.taocdn.com/s3/m/baebac2e804d2b160a4ec030.png)
华为笔试题2016华为软件测试笔试题及答案05-27一、判断题1.软各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢2016华为软件测试笔试题及答案05-27一、判断题 1.软件测试的目的是尽可能多的找出软件的缺陷。
() 测试是验收测试的一种。
()3.验收测试是由最终用户来实施的。
()4.项目立项前测试人员不需要提交任何工件。
华为笔试题2017答案05-27华为技术有限公司是一家生产销售通信设备的民营通信科技公司,于1987年正式注册成立,总部位于中国深圳市龙岗区坂田华为基地。
下面是华为笔试题2017答案,为大家提供参考。
华为笔试题2017答案华为笔试题目及答案05-271、华为公司的全称为()A、深圳市华为技术有限公司B、华为技术有限公司C、华为公司D、我司(答案:B,答A、C者酌情给分,答D者立即辞退,我司三令五申禁止使用该华为内部土语,屡禁不止,华为c语言笔试面试题05-271、局部变量能否和全局变量重名答:能,局部会屏蔽全局。
要用全局变量,需要使用”::”局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到2016华为招聘会笔试题05-27一、判断题 1.软件测试的目的是尽可能多的找出软件的缺陷。
() 测试是验收测试的一种。
()3.验收测试是由最终用户来实施的。
()4.项目立项前测试人员不需要提交任何工件。
2016华为笔试题目及答案05-27笔试题一1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP 与UDP呢?3.请问交换机和路由华为软件测试笔试题05-27选择题:下面那种文件不是符合PE 格式的是(?)文件操作的唯一依据是A文件名B文件句柄C物理地址D?下面哪个操作不会启动触发器华为历年笔试题05-27(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
华为笔试
![华为笔试](https://img.taocdn.com/s3/m/1e2f91ab960590c69ec3761d.png)
2016华为校招上机笔试练习题1、最高分是多少#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int n,m;while(scanf("%d %d",&n,&m)!=EOF){int *score = (int*)malloc(sizeof(int)*(n+1));int res[5000];int cnt = 0;for(int i=1; i<=n; i++)//这里写成for(int i=0; i<n; i++)可以提交成功,但是那是错误的,估计是华为OJ测试平台有问题,测试平台的下标可能是从0开始的,坑爹scanf("%d",&score[i]);char t;int a=0,b=0;while(m--){scanf("%c",&t);if(t == '\n')scanf("%c",&t);scanf("%d %d",&a,&b);if(t == 'Q'){int max = 0;for(int i=a;i<=b;i++){if(score[i] > max)max = score[i]; }res[cnt++] = max;}elsescore[a] = b;}for(int i=0; i<cnt; i++)printf("%d\n",res[i]);free(score);}return0;}2、简单错误记录#include <iostream>#include <string>#include <vector>usingnamespace std;struct Log{ string path;int row;int count;};static int log_cnt = 0;void doLog(Log &lg){int len = lg.path.size(),cnt = 0;for(int i=len-1; i>=0&& cnt<16; i--){if(lg.path[i] == '\\')break;else{cnt ++;}}lg.path = lg.path.substr(len-cnt,cnt);}void writeLog(vector<Log>&vec,Log &lg){doLog(lg);for(int i=0;i<vec.size();i++){if(vec[i].path == lg.path && vec[i].row == lg.row){vec[i].count ++;return ;}}lg.count = 1;vec[log_cnt%8] = lg;log_cnt ++;}int main(){vector<Log> vec;Log lg;while(cin>>lg.path>>lg.row){writeLog(vec,lg);}for(int i=0; i<vec.size(); i++)cout<<vec[i].path<<""<<vec[i].row<<""<<vec[i].count<<endl; return0;}3、扑克牌大小#include <iostream>#include <string>#include <vector>usingnamespace std;//个子对子顺子三个四个对王staticint judgeType(vector<char>&vec,int *value){ if(vec.size()==2){if(vec[0]=='r' || vec[0]=='R')return6;else{*value=vec[0];return2;}}*value=vec[0];return vec.size();}staticvoid print(vector<char>&vec){ if(vec[0] == 'r')cout<<"joker";elseif(vec[0] == 'R')cout<<"JOKER";elseif(vec[0] == 'T')cout<<"10";elsecout<<vec[0];for(int i=1; i<vec.size(); i++){if(vec[i] == 'r')cout<<" joker";elseif(vec[i] == 'R')cout<<" JOKER";elseif(vec[i] == 'T')cout<<" 10";elsecout<<""<<vec[i];}cout<<endl;}bool comp(char a,char b){switch(a){case'T': a = 'a';break;case'J': a = 'b';break;case'Q': a = 'c';break;case'K': a = 'd';break;case'A': a = 'e';break;case'r': a = 'f';break;case'R': a = 'g';break;}switch(b){case'T': b = 'a';break;case'J': b = 'b';break;case'Q': b = 'c';break;case'K': b = 'd';break;case'A': b = 'e';break;case'r': b = 'f';break;case'R': b = 'g';break;}return a>b;}int main(){string str;while(getline(cin,str)){int len = str.size();vector<char> vec1,vec2;bool flag = false;for(int i=0; i<len; i++){if(str[i] == '-'){flag = 1;continue;}elseif(isspace(str[i]))continue;if(flag){if(str[i]=='j') {vec1.push_back('r');i=i+4;}elseif(str[i]=='J'&& i==len-1){vec1.push_back('J');}elseif(str[i]=='J'&& str[i+1]=='O'){vec1.push_back('R');i=i+4;} elseif(str[i]=='1') {vec1.push_back('T');i=i+1;}else vec1.push_back(str[i]);}else{if(str[i]=='j') {vec2.push_back('r');i=i+4;}elseif(str[i]=='J'&& i==len-1){vec2.push_back('J');}elseif(str[i]=='J'&& str[i+1]=='O'){vec2.push_back('R');i=i+4;} elseif(str[i]=='1') {vec2.push_back('T');i=i+1;}else vec2.push_back(str[i]);}}int value1 = 0,value2 = 0;int type1 = judgeType(vec1,&value1);int type2 = judgeType(vec2,&value2);if(type1 == type2){if(comp(value1,value2)) print(vec1);else print(vec2);}else{if((type1==4 || type1==6) && type2<6) print(vec1);elseif((type2==4 || type2==6) && type1<6) print(vec2);else cout<<"ERROR"<<endl;}}return0;}华为上机题,对算法本身要求并不高,关键是要注意细节。
2016届华为研发上机题
![2016届华为研发上机题](https://img.taocdn.com/s3/m/2dec0d3acfc789eb172dc8f8.png)
vote xx1
vote xx3
vote xx4
vote xx1
vote xx2
vote xx7
vote xx4
vote xx5
vote xx3
vote xx2
vote xx1
vote xx7
getVoteResult
样例输出:
xx1 3
xx2 2
xx3 2
xx4 2
xx5 1
运行时间限制:
无限制
内存限制:
无限制
输入:
输入为多行形式输入,每一行为一条命令。输入的命令只会是有效命令不会有非法命令,但可能存在非法的投票,上面已经描述了。
添加候选人的命令如下:addCandidate为命令 xx1为候选人
addCandidatexx1
投票的命令如下:vote为命令 xx1为候选人的字符串
(样题,已对外公布)记票统计
描述:
模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。选举结束后获取各个候选人的得票数以及无效票的个数,输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。同时getVoteResult命令为结束命令。
{
printf("%s %d\n", r->name, r-&f("%d\n", no);
return 0;
}
vote xx1
统计投票的命令如下:getVoteResult为命令
getVoteResult
输出:
输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。
华为校招历年机试题目
![华为校招历年机试题目](https://img.taocdn.com/s3/m/9a07b447f7ec4afe04a1dfcb.png)
华为历年笔试题目总结因最近要参加华为的招聘,便从网上搜集了一些华为笔试历年题目,现总结献给大家,因本人非软件出生,水平有限,仅供参考,若有误处,请海涵。
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)单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);仅大小写不同的单词算同一个单词;如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。
华为上机笔试题
![华为上机笔试题](https://img.taocdn.com/s3/m/0efdac38ed630b1c59eeb529.png)
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的长度。
华为校园招聘软件研发上机测试题及部分解答+
![华为校园招聘软件研发上机测试题及部分解答+](https://img.taocdn.com/s3/m/b5e513ea856a561252d36fc3.png)
以下是收集到的两套题(没有添加答案),上机测试只有应聘软件研发的才会碰到。
有的写了点自己的解法,如果大家有好的想法欢迎讨论!大家一起学习嘛!以下是上机考试的一些注意事项:(1)考试时长为2个小时,总共有3个题(去年是2个题,难度要比今年大些),编译环境为VC 6.0(C语言)/ Eclipse(Java);(2)3个题目中大致第一个题是最简单的,第三个题是最难的;(3)从服务器上下载题目下来后最好能把工程保存到在电脑重启后不会自动还原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消失;(4)不要改动所给函数的原型,可以自己添加函数。
另外,华为提供的工程是将Main函数隐藏了的,所以自己不用再添加Main函数。
试题1:2011.9.6 转载自:/liuqiqi677/article/details/67554981、选秀节目打分,分为专家评委和大众评委,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)(这个问题很简单,应该只是涉及了下double/int转换)2、给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
算法题之三道2016华为校招上机笔试题
![算法题之三道2016华为校招上机笔试题](https://img.taocdn.com/s3/m/abc8fa3459fb770bf78a6529647d27284b7337c7.png)
算法题之三道2016华为校招上机笔试题题1#include <iostream>#include <string>#include <vector>using namespace std;int getmax(vector<int> vec, int a, int b){int max=0;for(int i=a-1;i<=b-1;i++){if(max<vec[i]){max=vec[i];}}return max;}int main(){//vector<Log> vec;//Log lg;//while(cin>>lg.path>>lg.row){// writeLog(vec,lg);//}//for(int i=0; i<vec.size(); i++)// cout<<vec[i].path<<" "<<vec[i].row<<" "<<vec[i].count<<endl;//return 0;//string inputstr;//int a;//int b;//char c[3];//while(cin>>inputstr>>a>>c)//{// cout<<inputstr<<a<<c<<'/n'<<endl;//}//"cin>>string/int/char"以空格为分隔符跳⼊下⼀个">>"输⼊操作//cout<<inputstr<<endl;//cout<<a<<endl;//cout<<c<<endl;//cout<<lg.row<<endl;int N,M,tem;cin>>N>>M;int n=N;int m=M;vector<int> score;//保存分数while(n--)//输⼊分数并保存操作,不清除输⼊缓冲区,保证输⼊的⼀列被录⼊{cin>>tem;score.push_back(tem);char mode;int A,B;vector<int> answer(M);//想对vector直接赋值就得定义⼤⼩,如果不定义⼤⼩,直接赋值会出错,只能⽤push_back int i=0;//答案下标while(m--){cin.sync();//清空cin输⼊缓冲区,1.保证输⼊的是当前输⼊⾏的数据;2. 保证每次输⼊的是⼀⾏中的数据cin>>mode>>A>>B;if(mode=='Q')answer[i++]=getmax(score,A,B);elsescore[A-1]=B;//将第A个ID改为B}for(int j=0;j<i;j++)cout<<answer[j]<<endl;}//样例输⼊://5 6//1 2 3 4 5//Q 1 5//U 3 6//Q 3 4//Q 4 5//U 2 9//Q 1 5题2#include <iostream>#include <string>#include <vector>using namespace std;struct Log{string name;int row;int times;};string getname(string &addrandname){string name;int N=addrandname.size(),num=1;while(addrandname[N-num]!='\\'&&num!=17)//跳出循环条件,遇到\或第17次循环{num++;}name=addrandname.substr(N-num+1,num-1);return name;void savelog(vector<Log> &vec_log, Log log){int N=vec_log.size(),flag=0;for(int i=0;i<N;i++){if(vec_log[i].name==&&vec_log[i].row==log.row){vec_log[i].times++;flag=1;}}if(flag==0){vec_log.push_back(log);}}void prin(vector<Log> vec_log){int N=vec_log.size();for(int i=0;i<N;i++){cout<<vec_log[i].name<<""<<vec_log[i].row<<""<<vec_log[i].times<<endl; }}int main(){string addrandname;int row;cin.sync();//清除输⼊缓冲区中的数据流cin.clear();// 将流中的所有状态值都重设为有效值vector<Log> vec_log;Log log;while(cin>>addrandname>>row){=getname(addrandname);log.row=row;log.times=1;savelog(vec_log,log);prin(vec_log);cin.sync();cin.clear();}//string name,aa="123456789123456789.c";//name=getname(aa);//cout<<name<<endl;//addrandname="aaaa";//addrandname="fie";//cout<<addrandname<<endl;}题3#include<iostream>#include<string>#include<vector>//vector完全可以替代数组,以后数组⽤vector,字符串⽤string,char、int、double只⽤于单个变量using namespace std;//单张1 对⼦3 三个5 顺⼦9 四个7 对王11//⾸先判断是否存在⼀对王//判断是否存在四个//剩下的⽐较第⼀张牌⼤⼩//难点:string类的使⽤,⽐较,赋值,长度等//单张牌⼤⼩的⽐较bool is2joker(string str)//判断是否为⼀对王{string joker2="joker JOKER",joker21="JOKER joker";if(str==joker2|str==joker21)//怎么⽐较两个stringreturn true;return false;}bool isquar(string str)//判断是否为四个⼀样的牌{if(str.size()==7)if(str[0]==str[6])return true;return false;}int pai2num(string str_01){int re;if(str_01=="jo")re=16;else if(str_01=="JO")re=17;else{switch(str_01[0]){case'3':re=3;break;case'4':re=4;break;case'5':re=5;break;case'6':re=6;break;case'7':re=7;break;case'8':re=8;break;case'9':re=9;break;case'10':re=10;break;case'j':re=11;break;case'q':re=12;break;case'k':re=13;break;case'a':re=14;break;case'J':re=11;break;case'Q':re=12;break;case'K':re=13;break;case'A':re=14;break;case'2':re=15;break;default:re=0;break;}}return re;}bool isbig(string str1,string str2)//判断牌⾯值的⼤⼩{return pai2num(str1.substr(0,2))>pai2num(str2.substr(0,2))?true:false;}void main(){string str;//这样的string类型只能由getline(cin,str)全局函数赋值//char 类型的向量只能由cin.get(str,size)或cin.getline()赋值string str1;string str2;getline(cin,str);//getline(cin,str,'/n')和cin.getline(char[],size)区别int loc=0;int loc1=0;int loc2=0;int flag1=0;//是否遇到-cout<<str.size()<<endl;for(loc;loc<str.size();loc++){//⽤什么⽅法在string后加⼊字符?如下//str1+=str[loc];//为什么不能⽤str1.append(str[loc])或str1.push_back(),因为参数必须为string类型,⽽不能是char类型//cout<<str1<<endl;//string类型的⽤法?//赋值时⽤⽤“”括起来的内容,有+=,append(),insert()⽅法//string类型不能⽤于switch(case 只能⽤于数值和单个字符‘’的内容⽐较),⼀般⽤if() else if()代替(if和elseif只执⾏⼀条,前⾯的优先级⾼) if(str[loc]=='-'){flag1=1;loc++;}if(flag1==0)str1+=str[loc];elsestr2+=str[loc];}cout<<"⼀⼿牌为:"<<str1<<endl;cout<<"另⼀⼿牌为:"<<str2<<endl;if(is2joker(str1)|is2joker(str2))//是否有⼀对王{string bigone;bigone=is2joker(str1)?str1:str2;cout<<"最⼤的⼿牌为:"<<bigone<<endl;}else if(isquar(str1)^isquar(str2))//是否其中⼀⼿为四张同样的牌{string bigone;bigone=isquar(str1)?str1:str2;cout<<"最⼤的⼿牌为:"<<bigone<<endl;}else if(str1.size()==str2.size())//直接⽐第⼀张牌的⼤⼩即可{string bigone;bigone=isbig(str1,str2)?str1:str2;cout<<"最⼤的⼿牌为:"<<bigone<<endl;}elsecout<<"ERROR"<<endl;}笔记:1.OJ系统中的题⽬要求输⼊样例为⼀⾏或多⾏时,怎么考虑输⼊过程? 因为OJ系统的输⼊样例和输出样例是⼀⼀对应的,每输⼊⼀⾏样例就进⾏处理和输⼊n⾏样例再进⾏统⼀处理不会影响评判结果。
华为软件测试工程师笔试及部分答案.doc
![华为软件测试工程师笔试及部分答案.doc](https://img.taocdn.com/s3/m/54c89181f18583d04864598a.png)
1:请你分别划OSI的七层网络结构图,和TCP/IP的五层结构图?OSI的七层网络结构图,和TCP/IP的五层结构图OSIOSI是Open System Interconnect的缩写,意为开放式系统互联。
在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。
为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。
这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presen tation Layer)和应用层(Application Layer)。
第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。
每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。
当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。
物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。
总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。
OSI参考模型的各个层次的划分遵循下列原则:1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。
华为校招2013-2016年机试题目-个人整理
![华为校招2013-2016年机试题目-个人整理](https://img.taocdn.com/s3/m/243ea6fe6294dd88d1d26b07.png)
2016校招机试题第一题输入一串用空格隔开的数字串,对于数字串的奇数位按升序排序,偶数位按降序排序示例输入:4 6 2 3 7 8 1处理过程:奇数位:4268升序排序结果:2468偶数位:6371 降序排序结果:7631结果输出:2 7 4 6 6 3 8 1#include<stdio.h>#include<string.h>#include<stdlib.h>void sort(char input[], int n, char output[]);void main(){char input1[]="4 6 2 3 6 7 8 1";char output1[16];int m=15;sort(input1,m,output1);for(int i=0;i<m;i++)printf("%c ",output1[i]);printf("\n");}void sort(char input[],int n,char output[]){int i,j,t1,t2,t=0;int *b=(int *)malloc(sizeof(int)*n);int *c=(int *)malloc(sizeof(int)*n);b[0]=input[0]-'0';for(i=4,t1=1;i<n;i+=4,t1++){for(j=t1-1;((input[i]-'0')<b[j])&&(j>=0);j--){b[j+1]=b[j];}b[j+1]=input[i]-'0';}c[0]=input[2]-'0';for(i=6,t2=1;i<n;i+=4,t2++){for(j=t2-1;((input[i]-'0')>c[j])&&(j>=0);j--){c[j+1]=c[j];}c[j+1]=input[i]-'0';}for(i=0,j=0;i<n;i+=4,j++){output[i]=b[j]+'0';output[i+1]=' ';output[i+2]=c[j]+'0';output[i+3]=' ';}}2.精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int i, j, w=0;
int x, y;
for (i=0; i<m; i++)
{
x = i;
for (j=0; j<n; j++)
{
y = j;
if (array[x][y] == word[w])
{
while ('\0' != word[w])
{
w++;
if ((x>0) && (x<m-1) && (y>0) && (y<n-1))
{
if (array[x-1][y] == word[w])
{
x = x-1;
}
else if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y-1] == word[w])
y = y-1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
}
else if ((x<m-1) && (y>0) && (y<n-1)) {
if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y-1] == word[w])
{
y = y-1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
}
else if ((x>0) && (y>0) && (y<n-1))
{
if (array[x-1][y] == word[w])
x = x-1;
}
else if (array[x][y-1] == word[w])
{
y = y-1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
}
else if ((x>0) && (x<m-1) && (y<n-1)) {
if (array[x-1][y] == word[w])
{
x = x-1;
}
else if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
else if ((x>0) && (x<m-1) && (y>0)) {
if (array[x-1][y] == word[w])
{
x = x-1;
}
else if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y-1] == word[w])
{
y = y-1;
}
else
break;
}
else if ((x<m-1) && (y<n-1))
{
if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
else if ((x<m-1) && (y>0))
{
if (array[x+1][y] == word[w])
{
x = x+1;
}
else if (array[x][y-1] == word[w])
{
y = y-1;
}
else
break;
}
else if ((x>0) && (y<n-1))
{
if (array[x-1][y] == word[w])
{
x = x-1;
}
else if (array[x][y+1] == word[w])
{
y = y+1;
}
else
break;
}
else if ((x>0) && (y>0))
{
if (array[x-1][y] == word[w])
{
x = x-1;
}
else if (array[x][y-1] == word[w])
{
y = y-1;
}
else
break;
}
}
if ('\0' == word[w])
{
return 1;
}
}
}
}
return 0;
}
int main(void)
{
int m, n;
char word[100];
char input[21][21] = {'0'};
scanf("%d %d", &m, &n);
scanf("%s", word);
for (int i=0; i<m; i++)
{
scanf("%s",input[i]);
}
// for (int k=0; k<m; k++)
// {
// for (int l=0; l<n;l++)
// {
// printf("%c",input[k][l]); // }
// }
bool b = maze(input, m, n, word);
if (1 == b)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}。