01. 第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,

 则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50


02. 求两个长长整型的数据的和并输出,例如输入1233333333333333 。。。 3111111111111111111111111.。。。,则输出

03. 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

 比如字符串“abacacde”过滤结果为“abcde”。

 要求实现函数:

 void stringFilter(const char*pInputStr, long lInputLen, char *pOutputStr);

 【输入】 pInputStr: 输入字符串

 lInputLen: 输入字符串长度

 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

04. 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

 压缩规则:

 1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".

 2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

 要求实现函数:

 void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr);

 【输入】 pInputStr: 输入字符串

 lInputLen: 输入字符串长度

 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

 

30. 计算重复字符个数

 描述: 输入一行字符串。如果字符是英文字母,则输出为输入的英文字符+连续出现的次数 ,

 例如 “ABBCCCC”-> “A1B2C4”;否则,丢弃该字符,不输出。

 运行时间限制: 无限制

 内存限制: 无限制

 输入: 输入的字符串,长度小于1024

 输出: ?输入的英文字符以及其重复的次数

 样例输入: ABBC67%%%CCCAA99

 样例输出: A1B2C4A2

  

27.统计数字出现的次数,最大次数的统计出来

 举例:

 输入:323324423343

 输出:3,6

 

07. 输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),

输出最后剩余数字个数。如 输入 “3,3,4,5,6,7,7”

 

09. 删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。

 

14. 字串转换

 问题描述:

 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a

 ;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。

 例如:aa 转换为bczz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

 要求实现函数:

 void convert(char *input,char*output)

 【输入】 char *input , 输入的字符串

 【输出】 char *output ,输出的字符串

 【返回】 无

 

35. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,

 * 如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数

 void  Stringchangconst  char*inpu,char*output)

 其中input是输入字符串,output是输出字符串

 

29. 子串分离

题目描述:  

通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一

个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子

串存储。 

如果输入“abcdef gh i        d”,结果将是abc,def,gh,i,d,

要求实现函数:  

void DivideString(const char *pInputStr, long lInputLen, char*pOutputStr);

【输入】  pInputStr:  输入字符串

         lInputLen:  输入字符串长度                  

【输出】  pOutputStr:  输出字符串,空间已经开辟好,与输入字符串等长;

 

28. 字符串首字母转换成大写

 举例:

 输入:this is a book

 返回:This Is A Book

 

34. 输入若干(不超过1000个)非负整数数字,请先取出为奇数的数字按从大到小排序,

 * 再取出偶数从小到大排序

 * 输入8 12 3 7 6 5 9

 * 9 8 6 3

 * 5 7 12

 * 输出9 5 8 7 6 12 3

  

38. 识别字符串中的整数并转换为数字形式(40分)

 问题描述:

 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数。

 要求实现函数:

 void take_num(const char*strIn, int *n, unsigned int *outArray)

 【输入】 strIn:   输入的字符串

 【输出】 n:       统计识别出来的整数个数

 outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数,

 outArray[1]是第二个整数,以此类推。数组地址已经分配,可以直接使用

 【返回】 无

 注:

 I、    不考虑字符串中出现的正负号(+, -),即所有转换结果为非负整数(包括0和正整数)

 II、   不考虑转换后整数超出范围情况,即测试用例中可能出现的最大整数不会超过unsigned int可处理的范围

 III、  需要考虑 '0' 开始的数字字符串情况,比如"00035" ,应转换为整数35;

 "000" 应转换为整数0;"00.0035" 应转换为整数0和35(忽略小数点:mmm.nnn当成两个数mmmnnn来识别)

 IV、  输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。

 示例

 输入:strIn ="ab00cd+123fght456-25 3.005fgh"

 输出:n = 6

 outArray = {0, 123, 456, 25, 3, 5}

 

15. 在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,

 其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);

 找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;

 如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。

 输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格。

 要求实现函数:

 void my_word(charinput[],char output[])

 【输入】 char input[], 输入的字符串

 【输出】 char output[],输出的字符串

 【返回】 无

 


32:根据指定的分隔符分隔字符串,并输出指定的段

 描述

 根据指定的分隔符分隔字符串,并输出指定的段。如果指定的段超过分隔的段数,输出:NULL

 举例:

 AAA?BBB?CCC??2

 字符串为:AAA?BBB?CCC?

 分隔符为:?

 指定的段为:2

 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB

 输入输出格式要求

 输入分隔字符串长度小于128个字符,指定的段是一个正整数。

 样例

 输入:AAA?BBB?CCC??2

 输出:BBB

 

21. (1)将第一行中含有第二行中“23”的数输出并排序

   (2).输入一行数字:123 423 5645 875 186523 ,在输入第二行:23

 将第一行中含有第二行中“23”的数输出并排序,结果即:123 423 186523

 

 

22. 输入m个字符串 和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。

 如 n=8 m=9 ,

 123456789划分为:  12345678

                    90000000

 123化为 :12300000

 

08.输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的两个身高;

若身高差相同,选平均身高高的那两个身高;从小到大输出;

如 输入170 181 173 186 190   输出 170 173

 

11. 描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:

 (1) 及格线是10的倍数;

 (2) 保证至少有60%的学生及格;

 (3) 如果所有的学生都高于60分,则及格线为60分

 输入:输入10个整数,取值0~100

 输出:输出及格线,10的倍数

 

12. 描述:一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

 每盏电灯由一个拉线开关控制。开始,电灯全部关着。

 有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;

 接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;

 如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。

 注:电灯数和学生数一致。

 输入:电灯的数量

 输出:亮着的电灯数量

 样例输入:3

 样例输出:1

 

16. 数组中数字都两两相同,只有一个不同,找出该数字:

 异或运算的性质:任何一个数字异或它自己都等于0

因为其他数字都出现了两次,在异或中全部抵消掉了。

算法步骤:1,对1-n个数做异或运算,得到XOR = 1^2^3^4....^n。

          2,   用XOR与当前n-1数组的所有元素依次取异或:

因为XOR中与当前数字相同的数,都在异或运算中抵消掉了,最终剩下的,就是我们要找的那个丢失的数。

所谓抵消:举个例子: 1,1,2

1: 0001

2:   0010                   1^1=0000             

 1^1^2 ===== 0000 ^ 0010 = 0010=2,也就是说两个1抵消了。

任何一个数字异或它自己都等于0,而0与任何数字求异或,都为原数字!

 

17. 题目二:数组中数字两两相同,有两个不同,找出这两个:

 

05. 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

 输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

 补充说明:

 1. 操作数为正整数,不需要考虑计算结果溢出的情况。

 2. 若输入算式格式错误,输出结果为“0”。

 要求实现函数: 

 void arithmetic(const char*pInputStr, long lInputLen, char *pOutputStr);

 【输入】 pInputStr:  输入字符串

 lInputLen:  输入字符串长度         

 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

 示例 

 输入:“4 + 7”  输出:“11”

 输入:“4 - 7”  输出:“-3”

 输入:“9 ++ 7”  输出:“0” 注:格式错误

 

18. 链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,

则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现

思想:采用遍历链表,分成length/k组,对每组进行逆转,逆转的同时要将逆转后的尾和头连接起来

 

19. 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g

 

23将 电话号码 one two 。。。nine zero

 翻译成1 2 。。9 0

 中间会有double

 例如输入:OneTwoThree

 输出:123

 输入:OneTwoDoubleTwo

 输出:1222

 输入:1Two2 输出:ERROR

 输入:DoubleDoubleTwo 输出:ERROR

 有空格,非法字符,两个Double相连,Double位于最后一个单词 都错误

 

39. 将中文数字的拼音字符串转为最终的数字;每个字拼音的首字母大写,

 比如:JiuWanJiuQianJiuBaiJiuShiJiu表示九万九千九百九十九,即阿拉伯数字,。

 你当然记得每个数字的汉语拼音,但是还是提示你一下,

 LingYiErSanSiWuLiuQiBaJiuShiBaiQian、Wan。

 为简单起见,我们要处理的数字在万以内,不含负数,十、百、千、万等单位前面一定有数字,如YiShi表示。

 输入: 中文数字的拼音字符串

 输出: 阿拉伯数字

 样例输入: SanBaiLingSan

 样例输出: 303

 

24.将整数倒序输出,剔除重复数据

 输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,

 则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。

 如果是负数,比如输入-175,输出-571。

 

25.编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,

 * 请编写程序检测输入一行if语句中的圆括号是否匹配正确。

 * 同时输出语句中出现的左括号和右括号数量,

 * 如if((a==1)&&(b==1))是正确的,

 * 而if((a==1))&&(b==1))是错误的。

 * 注意if语句的最外面至少有一对括号。提示:用堆栈来做。

 输入:if((a==1)&&(b==1))

 输出:RIGTH 3 3

 输入:if((a==1))&&(b==1))

 输出:WRONG 3 4

 

06.一组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人

(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)

围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,

数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。)

 

26. 约瑟夫问题

输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,

将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。

如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序

比如:输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)

第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数

第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数

第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数

最后一轮计数出列数字为4,计数过程完成。

输出数值出列顺序为:2,3,1,4。

要求实现函数:

void array_iterate(int len, int input_array[], intm, int output_array[])

【输入】 int len:输入数列的长度;

int intput_array[]:输入的初始数列

int m:初始计数值

【输出】 int output_array[]:输出的数值出列顺序

【返回】 无

示例:

输入:int input_array[] = {3,1,2,4},int len = 4, m=7

输出:output_array[]= {2,3,1,4}

解题思路:

每次出列一个数值,需要对m、input_array、output_array、输出位置outPos、起始位置startPos进行更新;

对于输出位置outPos的计算是关键!通过分析可知,outPos=(startPos+m-1)%num

 

31. 按字母序输出定长排列组合。输入“ABC”,定长为2,则输出

 AB AC BC

 

33:输入若干整数,输出其中能被这些整数中其他元素整除的那些元素

 描述

 输入一组大于0小于1000的整数,且均不相同,逗号隔开,输出其中能被这些整数中其他元素整除的那些元素。

 输入输出格式要求

 输入要求同上述描述,输出要求整数顺序按照输入时的顺序输出。

 样例

 输入:2,4,6,8,10,12,3,9

 输出:4,6,8,10,12,9

 

37. 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,

 * 如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,

 * 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

 例如:input[] = {3, 6, 1, 9, 7}   output[] = {3, 7, 9, 6, 1};

 input[] = {3, 6, 1, 9, 7, 8}    output[] = {1, 6, 8, 9, 7, 3}

 

36.比较一个数组的元素 是否为回文数组

 

 

 

华为校园招聘笔试题(机考题目)相关推荐

  1. 2012九月十月腾讯,网易游戏,百度最新校园招聘笔试题

    十月下旬腾讯,网易游戏,百度最新校园招聘笔试题集锦(第271-330题) 引言 此文十月百度,阿里巴巴,迅雷搜狗最新面试十一题已经整理了最新的面试题70道,本文依次整理腾讯,网易游戏,百度等各大公司最 ...

  2. 2013搜狗校园招聘笔试题

    研习了Linux公社发布的2013搜狗校园招聘笔试题,还是有些收获的. //第一题:以下程序的输出是___________________ class Base { public:Base(int j ...

  3. 百度2015校园招聘笔试题

    百度2015校园招聘笔试题(自己凭记忆第一时间,记录了这么多,有些描述比较简单,请大神们补充) 一 .简答题(30分) 1. 进程和线程的联系与区别. 2. 简述数据库的存储过程及其优点. 3. st ...

  4. k个一组翻转链表 哔哩哔哩2020校园招聘笔试题/LeetCode_25(困难)讲解

    目录标题 一.题目信息 二.解题思路 三.代码实现 四.其他精选题目分享 一.题目信息 LeetCode版本 牛客网版本 下面我以牛客网为例写代码 题目需要先输入一组数字代表链表的值,以#代表结尾. ...

  5. 2014迅雷校园招聘笔试题(C++)

    2014迅雷校园招聘笔试题(C++)     这是迅雷在深圳那边招聘的笔试题!!也快到我们武汉来面试笔试了吧~~ 时间:2013-9-7 地点:北京大学深圳研究生院 技术类别:C++开发 说明:图片是 ...

  6. 腾讯2017年校园招聘笔试题第一题

    刚做完腾讯2017年校园招聘笔试题,在这里跟大家分享一下: 1. 题目 2. 我的思路 循环判断i(i从2到(输入值/2+1)),是否有满足i和(输入值-i)均为质数的情况.如果有,count加1.循 ...

  7. 腾讯2017年校园招聘笔试题第二题

    下面是腾讯2017年校园招聘笔试题第二题,在这里跟大家一起分享: 1. 题目 2. 我的思路 这题我觉得题目说的很清楚了.用类似于二分查找的方法,记录最大值.最小值和中间值,判断并记录在左区间(值为0 ...

  8. 赛码浪潮笔试题库软件实施岗位_浪潮集团校园招聘笔试题.doc

    浪潮集团校园招聘笔试题.doc 浪潮集团校园招聘笔试题 浪潮集团校园招聘笔试题篇一:浪潮笔试题目 6.2 笔试题目浪潮软件研发B卷(60分钟) 注:对于有C和JAVA选择的试题,考生可以选择其中一种解 ...

  9. 百度2014研发类校园招聘笔试题解答

    http://blog.csdn.net/lanxuezaipiao/article/details/42915285 先总体说下题型,共有3道简答题,3道算法编程题和1道系统设计题,题目有难有易,限 ...

最新文章

  1. blender硬表面建模渲染终极教程
  2. PostgreSQL 数据目录结构
  3. Tomcat Jenkins iOS自动打包
  4. 一次绕过360+诺顿的提权过程
  5. Mr.J-- jQuery学习笔记(二十九)--属性操作方法(获取属性判断)
  6. 云计算中的地域和可用区概念
  7. 基于Redis的微博计算好友关系
  8. java获取系统信息:java的信息、操作系统的信息、用户的信息、虚拟机的信息、系统设置的信息。
  9. HTML仿网易云音乐首页静态,用 Vue.js 模仿一个简单的网易云音乐
  10. 华为手机怎么设置字体?
  11. Web前端的优点有哪些?为什么Web前端可以如此火爆?
  12. Swing-图表(扇形图的绘制)
  13. 服务器共享文件夹Windows无法访问,windows server 2008 R2 无法访问本机共享文件夹
  14. 服务器加油站能微信,加油可以微信吗?可以~支付宝呢?可以~
  15. java类与对象实验报告心得体会_java实习实训报告心得【三篇】
  16. 用数字计算机公式表白,用最浪漫的数学表白,爱情数学表白公式
  17. linux12 -MYSQL数据库 --> 19数据库面试必备手册
  18. 十进制转余三码或余三码转十进制
  19. 前端学习--【训练营】Cisco PT Student模拟dhcp自动分配IP地址实现网络互联
  20. 集成HMS Scan Kit扫码SDK,轻松实现手机扫码选购

热门文章

  1. 新手用cdr如何设计名片_新名片设计
  2. 读稻盛先生的《活法和干法》的十点灵感
  3. 网友随记 - 祝福Jerry Wang 早日康复
  4. 五金切断模具结构和设计注意事项
  5. Python关键字大全
  6. XSS漏洞原理及攻击
  7. EC-Net: a Edge-aware Point set Consolidation Network
  8. 老版本微信平台服务器部署步骤(没那么坑版)
  9. Oracle database oracle12c 完全卸载 一键卸载
  10. Word文档重新打开时恢复到上次阅读位置