作者: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相关推荐

  1. 校招c语言笔试题数组,华为校园招聘考试C语言C笔试题

    华为校园招聘考试C语言C笔试题 华为校园招聘考试C语言C++笔试题 1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2)在模块 ...

  2. 互联网公司招聘--华为--校园招聘程序员--2017年笔试题

    互联网公司招聘–华为–校园招聘程序员–2017年笔试题 互联网公司招聘–华为–校园招聘程序员–2017年笔试题 互联网公司招聘–华为–校园招聘程序员–2017年笔试题

  3. 互联网公司招聘--华为--校园招聘程序员--2015年笔试题

    互联网公司招聘–华为–校园招聘程序员–2015年笔试题 互联网公司招聘–华为–校园招聘程序员–2015年笔试题 互联网公司招聘–华为–校园招聘程序员–2015年笔试题

  4. 互联网公司招聘--京东--前端-2016年笔试题

    互联网公司招聘–京东–前端-2016年笔试题 互联网公司招聘–京东–前端-2016年笔试题 互联网公司招聘–京东–前端-2016年笔试题 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年 ...

  5. 互联网公司招聘--阿里巴巴--数据分析--2017年笔试题

    互联网公司招聘–阿里巴巴–数据分析–2017年笔试题 互联网公司招聘–阿里巴巴–数据分析–2017年笔试题 互联网公司招聘–阿里巴巴–数据分析–2017年笔试题

  6. 搜狐2010校园招聘第一站北邮笔试题

    搜狐2010校园招聘第一站北邮笔试题 转自 狼窝 http://blog.csdn.net/haoxing168 转载请注明出处 一.填空选择题.(好像是20多分) 太多了,忘了,总之是基础的啦,有看 ...

  7. 搜狐2010校园招聘第一站北邮笔试题(转) 以及 本人做的部分答案

      搜狐2010 校园招聘第一站北邮笔试题  <script type="text/javascript"> </script> <script ty ...

  8. 华为校招java笔试题库_华为校招Java笔试题库,看你会不会做

    1.在java中如果声明一个类为final,表示什么意思? 答:final是最终的意思,final可用于定义变量.方法和类但含义不同,声明为final的类不能被继承. 2.父类的构造方法是否可以被子类 ...

  9. 2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢)

    2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢) 分类: 校招笔经 or 面经2013-09-18 16:19 674人阅读 经过了 叫人伤感的 阿里,我决定去 这些小公司找找 信心,今天 ...

  10. 华为C语言笔试题集合

    ①华为笔试题搜集 1.static有什么用途?(请至少说明两种)     1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.     2) 在模块内(但在函数体外),一个被声明为 ...

最新文章

  1. 序列化/反序列化,我忍你很久了,淦!
  2. 工业机器人的下一个竞争焦点已经非常明确:通用人工智能(AGI)
  3. php mongodb _id,PHP库 查询Mongodb中的文档ID的方法
  4. java中不用impore导入的_java import机制(不用IDE)
  5. 百度前端学院-基础学院-第四课
  6. uva 11971 Polygon
  7. 投资百亿的新大学,有新进展!
  8. html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
  9. 解决PopupWindow的阴影覆盖问题
  10. Java中的文件压缩
  11. 西门子系列PLC教学视频资源3——S7-1500博图
  12. 关于初高中虚拟仿真实验室解决方案
  13. 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
  14. 【无2022年聚合工艺考试模拟100题模拟考试平台操作
  15. nginx HLS m3u8播放视频跨域问题
  16. java 蓝牙打印_Android蓝牙打印机,带你真正了解各种打印格式
  17. Redis Lua 列表批量操作
  18. Spring Boot教程(二十)开发Web应用(1)
  19. 线性代数——理解向(3)
  20. ALV 单元格可编辑,跟新数据库,自定义工具栏

热门文章

  1. 什么是新零售,新零售的模式又该怎么做?
  2. 汉诺塔递归的空间复杂度_暴力递归与动态规划 1.0
  3. Fiddler抓取手机APP报文
  4. 华为p40配置鸿蒙系统,华为P40配置曝光 将搭配鸿蒙系统+后置五摄
  5. ios 去掉底部状态栏_iOS开发之状态栏隐藏(问题篇)
  6. 中兴服务器售后,中兴全兼容智能视讯服务器ZXMVC8900
  7. 开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果
  8. SpringBoot集成Kafka消息队列
  9. Linux如何查找文件内存,Linux之内存检查
  10. S7-Smart200-和变频器Modbus通讯 程序由smart200 编写,东源变频器的modbus通讯