2014年实习生招聘之华为实习生招聘笔试题(上机完成)—2014/04/02
作者:Bryant Lei
出处:http://blog.csdn.net/bryantlei
华为(武汉)今年的实习生招聘的第一轮选拔是上机测试,其平台类似于常见的编程网站,即用户提交程序,由系统测试程序是否正确(是否通过测试样例)。之前我没有做过类似的编程,吃了很大亏,明明自己测试是对的,但是提交后却被系统告知程序错误,后来实在受不了,于是停止编写程序,去找找系统有没有提示,果然在“常见疑问”中看到了相关的说明,原来输入要求是标准输入,即C/C++必须用while(scanf("%d",&i)!=EOF),java用Scanner scanner = new Scanner(System.in),我在这浪费了很多时间。真实印证了那句话:“磨刀不误砍柴工”!
总共有3道题目,看上去貌似都不难,并且注明没有时间复杂度和空间复杂度的要求,三个题目如下。
1.把数字转化对应为小写字母并输出,例如输入 1 2 3 5 26 127 ef 1aa,就输出a b c e z ? ? ? ?。注意对非数字和空格的处理。
解答:
#include <stdio.h>
#define N 100int isRightNumberFormat(char *str, int start, int end)//测试字符串start-end中的字符是否都是数字
{while(start <= end){if(str[start] > '0' && str[start] < '9')start++;elsereturn 0;}return 1;
}int stringToNumber(char *str, int start, int end)//把字符串(start-end)转化为整数
{int sum = 0,num;while(start <= end){num = (str[start] - '0');sum = sum*10 + num;start++;}return sum;
}void numbersToLetters(char *str)//把数字转化为对应的小写字母,如1 2 3 26-> a b c z
{int i=0,start,end,num;while(str[i] != '\0'){if(str[i] == ' ')//如果字符是空格,则直接出处空格{printf(" ");i++;} else{if(str[i] > '0' && str[i] < '9'){//如果字符是1-9范围中的数,则需要找到结束的那个字符对应的下标//如“123 1”,则需要找到“3”对应的下标以判断这个字符串包含的字符是否都是数字start = end = i; while(str[end] !=' ' && str[end] !='\0')end++;end--;//printf("%d",end);if(isRightNumberFormat(str,start,end)){//start-end中的字符都是数字,则需要判断这个数字的大小//如果在[1,26]内,则输出对应的小写字母//否则输出?num = stringToNumber(str,start,end);if(num > 0 && num < 27){ printf("%c",(char)('a' + (num - 1)));} else printf("?");}else //start-end中的字符并非都是数字printf("?");}i=end+1; } }
}
int main()
{ int count=0;char ch;char str[N];while((ch = getchar()) != EOF)str[count++] = ch;str[count]='\0'; numbersToLetters(str);return 0;
}
2.升序输出数组中重复次数最多的数字,例如输入1 2 3 3 4 4 9 9 9,输出9,输入1 2 3 3 3 4 4 9 9 9,输出3 9。
解答:
/*升序输出数组中重复次数最多的数字,例如输入1 2 3 3 4 4 9 9 9,输出9,输入1 2 3 3 3 4 4 9 9 9,输出3 9。
*/
#include <iostream>
#include <map>
using namespace std;
typedef map<int,int> m_iip;//存放键值对,键是整数,值是整数出现的次数int maxAppearenceInMap(m_iip pMap)
{//返回map中key出现的最多的次数//比如数组1 2 2 2 3 4 4 5,因为数组中2出现了最多次,3次,所以返回3int maxValue = 0xffffffff;m_iip::iterator iter;for(iter = pMap.begin(); iter != pMap.end(); iter++){if(iter->second > maxValue)maxValue = iter->second;}return maxValue;
}void printKeyWithDefinedAppearence(m_iip pMap, int appearence)
{//输出map中有指定value的keym_iip::iterator iter;for(iter = pMap.begin(); iter != pMap.end(); iter++)//遍历map{if(iter->second == appearence)cout<<iter->first<<" ";}cout<<endl;
}int main()
{int i;m_iip tMap;while((scanf("%d",&i) != EOF)){m_iip::iterator l_it = tMap.find(i);//find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 if(l_it == tMap.end())tMap[i] = 1;else{tMap[l_it->first] += 1;}}int maxAppearence = maxAppearenceInMap(tMap);printKeyWithDefinedAppearence(tMap,maxAppearence);return 0;
}
map中的元素是自动按key升序排序
map的基本操作函数:
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
3.求二叉树的深度。
#include <iostream>
using namespace std;
#define ElemType char
//节点声明,数据域、左孩子指针、右孩子指针
typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序建立二叉树
BiTree CreateBiTree(){char ch;BiTree T;scanf("%c",&ch);if(ch=='#')T=NULL;else{T = (BiTree)malloc(sizeof(BiTNode));T->data = ch;T->lchild = CreateBiTree();T->rchild = CreateBiTree();}return T;//返回根节点
}
//返回二叉树的深度
int depth(BiTNode* root)
{int left,right;if(root == NULL)return 0;left = depth(root->lchild);right = depth(root->rchild);return (left >= right) ? left+1:right+1;
}//先序遍历二叉树
void PreOrderTraverse(BiTree T){if(T){printf("%c",T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}
}//中序遍历
void InOrderTraverse(BiTree T){if(T){PreOrderTraverse(T->lchild);printf("%c",T->data);PreOrderTraverse(T->rchild);}
}
//后序遍历
void PostOrderTraverse(BiTree T){if(T){PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);printf("%c",T->data);}
}
void main(){BiTree T;//控制台输入124###3##,之间没有空格T = CreateBiTree();//建立PreOrderTraverse(T);//输出cout<<endl;cout<<depth(T);//getch();
}
注解:建立二叉树时,要特别注意控制台的输入(我就在这混乱了很久)。124###3##(注意字符之间并没有空格,输入完后回车)对于的二叉树形状如下:
2014年实习生招聘之华为实习生招聘笔试题(上机完成)—2014/04/02相关推荐
- 校招c语言笔试题数组,华为校园招聘考试C语言C笔试题
华为校园招聘考试C语言C笔试题 华为校园招聘考试C语言C++笔试题 1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2)在模块 ...
- 互联网公司招聘--华为--校园招聘程序员--2017年笔试题
互联网公司招聘–华为–校园招聘程序员–2017年笔试题 互联网公司招聘–华为–校园招聘程序员–2017年笔试题 互联网公司招聘–华为–校园招聘程序员–2017年笔试题
- 互联网公司招聘--华为--校园招聘程序员--2015年笔试题
互联网公司招聘–华为–校园招聘程序员–2015年笔试题 互联网公司招聘–华为–校园招聘程序员–2015年笔试题 互联网公司招聘–华为–校园招聘程序员–2015年笔试题
- 互联网公司招聘--京东--前端-2016年笔试题
互联网公司招聘–京东–前端-2016年笔试题 互联网公司招聘–京东–前端-2016年笔试题 互联网公司招聘–京东–前端-2016年笔试题 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年 ...
- 互联网公司招聘--阿里巴巴--数据分析--2017年笔试题
互联网公司招聘–阿里巴巴–数据分析–2017年笔试题 互联网公司招聘–阿里巴巴–数据分析–2017年笔试题 互联网公司招聘–阿里巴巴–数据分析–2017年笔试题
- 搜狐2010校园招聘第一站北邮笔试题
搜狐2010校园招聘第一站北邮笔试题 转自 狼窝 http://blog.csdn.net/haoxing168 转载请注明出处 一.填空选择题.(好像是20多分) 太多了,忘了,总之是基础的啦,有看 ...
- 搜狐2010校园招聘第一站北邮笔试题(转) 以及 本人做的部分答案
搜狐2010 校园招聘第一站北邮笔试题 <script type="text/javascript"> </script> <script ty ...
- 华为校招java笔试题库_华为校招Java笔试题库,看你会不会做
1.在java中如果声明一个类为final,表示什么意思? 答:final是最终的意思,final可用于定义变量.方法和类但含义不同,声明为final的类不能被继承. 2.父类的构造方法是否可以被子类 ...
- 2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢)
2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢) 分类: 校招笔经 or 面经2013-09-18 16:19 674人阅读 经过了 叫人伤感的 阿里,我决定去 这些小公司找找 信心,今天 ...
- 华为C语言笔试题集合
①华为笔试题搜集 1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为 ...
最新文章
- 序列化/反序列化,我忍你很久了,淦!
- 工业机器人的下一个竞争焦点已经非常明确:通用人工智能(AGI)
- php mongodb _id,PHP库 查询Mongodb中的文档ID的方法
- java中不用impore导入的_java import机制(不用IDE)
- 百度前端学院-基础学院-第四课
- uva 11971 Polygon
- 投资百亿的新大学,有新进展!
- html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
- 解决PopupWindow的阴影覆盖问题
- Java中的文件压缩
- 西门子系列PLC教学视频资源3——S7-1500博图
- 关于初高中虚拟仿真实验室解决方案
- 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
- 【无2022年聚合工艺考试模拟100题模拟考试平台操作
- nginx HLS m3u8播放视频跨域问题
- java 蓝牙打印_Android蓝牙打印机,带你真正了解各种打印格式
- Redis Lua 列表批量操作
- Spring Boot教程(二十)开发Web应用(1)
- 线性代数——理解向(3)
- ALV 单元格可编辑,跟新数据库,自定义工具栏
热门文章
- 什么是新零售,新零售的模式又该怎么做?
- 汉诺塔递归的空间复杂度_暴力递归与动态规划 1.0
- Fiddler抓取手机APP报文
- 华为p40配置鸿蒙系统,华为P40配置曝光 将搭配鸿蒙系统+后置五摄
- ios 去掉底部状态栏_iOS开发之状态栏隐藏(问题篇)
- 中兴服务器售后,中兴全兼容智能视讯服务器ZXMVC8900
- 开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果
- SpringBoot集成Kafka消息队列
- Linux如何查找文件内存,Linux之内存检查
- S7-Smart200-和变频器Modbus通讯 程序由smart200 编写,东源变频器的modbus通讯