作者: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. linux内核centos6.9,CentOS6.9手动编译并更新Kernel内核版本
  2. Pycharm ipynb
  3. 网盘php资料,怎么搜索百度网盘里的资料(php版)
  4. 温州大学《机器学习》课程课件(一)
  5. matlab inpainting,MATLAB-Python-inpainting-codes-master
  6. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]
  7. 图像处理-STB图片读写
  8. 宁波大学计算机应用技术考研,宁波大学2021年计算机考研拟录取数据分析
  9. ICML 2019收录774篇论文:谷歌153篇,清华北大26篇
  10. Task10.Bert
  11. python如何设置双索引_python – 设置值多索引熊猫
  12. 阅读《视音频编解码技术零基础学习方法-雷霄骅》摘要
  13. MATLAB 画常见二次曲面汇总
  14. 在matlab中的polyval函数,Python/Numpy中三输出等价的Matlab polyval函数
  15. DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)
  16. 科技对金融业的告白信,有百融云创的落款
  17. FBX SDK 总结之中文问题
  18. 户型平面原型设计-简介
  19. Excel 正则表达式的用法
  20. 一个人越想赚钱,就越要改掉这3个习惯,否则注定穷一辈子

热门文章

  1. 电信智能手机android,中国电信明提3G终端重点打造Android智能手机
  2. 《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第7章 习题7
  3. 牛客SQL练习-7-查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t
  4. 取代李嘉诚成香港新首富,宁德时代曾毓群将面对的是什么?
  5. linux 图像采集卡驱动程序,基于Linux操作系统的视频采集卡驱动程序设计
  6. word中如何单栏与双栏混排
  7. PPT里面添加3Dvia Composer Player 控件
  8. 博士研究生如何做创新性研究?(蒲慕明院士)
  9. 如何订立合规的电子劳动合同 ——关于人社部发布《电子劳动合同订立指引》的深度解读(一)
  10. 连接被远程计算机终结,远程桌面问题终极解决方案