华为2014校园招聘的机试题目和2013年的完全一样。
一、题目描述(60分):
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

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

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

示例 
输入:“deefd”        输出:“def”
输入:“afafafaf”     输出:“af”
输入:“pppppppp”     输出:“p”

main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出
当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。
 
二、题目描述(40分):
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

要求实现函数: 
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

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

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

示例 
输入:“cccddecc”   输出:“3c2de2c”
输入:“adef”     输出:“adef”
输入:“pppppppp” 输出:“8p”

三、题目描述(50分): 
通过键盘输入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” 注:格式错误

[cpp] view plaincopy
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #define MAXCHAR 256
  5. void stringFilter(const char* pInputStr , long lInputLen , char* pOutputStr)
  6. {
  7. bool hash[26] = {0};    //统计字符是否出现
  8. int i , j;
  9. for(i = 0 , j = 0 ; i < lInputLen; ++i)
  10. {
  11. if(false == hash[pInputStr[i] - 'a'])     //该字符还木有出现过
  12. {
  13. hash[pInputStr[i] - 'a'] = true;
  14. pOutputStr[j++] = pInputStr[i];
  15. }
  16. }
  17. pOutputStr[j] = '\0';
  18. }
  19. void stringZip(const char* pInputStr , long lInputLen , char* pOutputStr)
  20. {
  21. int i , j , k , num;
  22. char buffer[20];
  23. for(i = 0 , k = 0; i < lInputLen; )
  24. {
  25. num = 0;
  26. for(j = i + 1 ; j < lInputLen ; ++j)
  27. {
  28. if(pInputStr[i] == pInputStr[j])     //统计字符串中每个字符后面连续出现的重复字母次数
  29. ++num;
  30. else
  31. break;
  32. }//for
  33. if(0 != num)    //num可能是两位或三位或更多位的整数
  34. {
  35. memset(buffer , 0 , sizeof(buffer));
  36. itoa(num + 1 , buffer , 10);      //将整数按10进制转换为字符串
  37. strcpy(pOutputStr + k , buffer);
  38. k += strlen(buffer);
  39. }
  40. pOutputStr[k++] = pInputStr[i];
  41. i = i + num + 1;
  42. }//for
  43. pOutputStr[k] = '\0';
  44. }
  45. void arithmetic(const char* pInputStr , long lInputLen , char* pOutputStr)
  46. {
  47. int i , j , num1 , num2 , result , num_space;
  48. char buffer[4];
  49. bool add , sub;
  50. add = sub = false;
  51. for(i = 0 , num_space = 0 ; i < lInputLen ; ++i)
  52. {
  53. if(pInputStr[i] == ' ')
  54. ++num_space;
  55. }
  56. if(2 != num_space)     //空格数非法
  57. {
  58. pOutputStr[0] = '0';
  59. pOutputStr[1] = '\0';
  60. return ;
  61. }
  62. num1 = num2 = 0;
  63. for(i = 0 ; pInputStr[i] != ' ' ; ++i)
  64. {
  65. if(pInputStr[i] >= '0' && pInputStr[i] <= '9')
  66. num1 = num1 * 10 + pInputStr[i] - '0';
  67. else                 //第一个操作数中有非法字符
  68. {
  69. pOutputStr[0] = '0';
  70. pOutputStr[1] = '\0';
  71. return ;
  72. }
  73. }
  74. for(j = i + 1 ; pInputStr[j] != ' ' ; ++j);
  75. if(1 != j - i - 1)     //运算符长度不合法
  76. {
  77. pOutputStr[0] = '0';
  78. pOutputStr[1] = '\0';
  79. return ;
  80. }
  81. else    //操作符的长度为1
  82. {
  83. if('+' != pInputStr[i+1] && '-' != pInputStr[i+1])    //操作符号非法
  84. {
  85. pOutputStr[0] = '0';
  86. pOutputStr[1] = '\0';
  87. return ;
  88. }
  89. else
  90. {
  91. if('+' == pInputStr[i+1])
  92. add = true;
  93. if('-' == pInputStr[i+1])
  94. sub = true;
  95. for(i = j + 1 ; i < lInputLen ; ++i)
  96. {
  97. if(pInputStr[i] >= '0' && pInputStr[i] <= '9')
  98. num2 = num2 * 10 + pInputStr[i] - '0';
  99. else          //第二个操作数中有非法字符
  100. {
  101. pOutputStr[0] = '0';
  102. pOutputStr[1] = '\0';
  103. return ;
  104. }
  105. }//for
  106. if(add)
  107. result = num1 + num2;
  108. else if(sub)
  109. result = num1 - num2;
  110. memset(buffer , 0 , sizeof(buffer));
  111. itoa(result , buffer , 10);      //将整数按10进制转换为字符串
  112. strcpy(pOutputStr , buffer);
  113. }//esle
  114. }//else
  115. }
  116. int main(void)
  117. {
  118. printf(" -- 2014年华为校园招聘机试题 (http://blog.csdn.net/hackbuteer1) --\n\n");
  119. char pInputStr1[] = {"aaabbbcccdde"};
  120. char pInputStr2[] = {"aaaaaaaaaaaabbcddddddddddddddddde"};
  121. char pInputStr3[] = {"3 + 4"};
  122. char pOutputStr1[MAXCHAR] = {0};
  123. char pOutputStr2[MAXCHAR] = {0};
  124. char pOutputStr3[MAXCHAR] = {0};
  125. stringFilter(pInputStr1 , strlen(pInputStr1) , pOutputStr1);
  126. stringZip(pInputStr2 , strlen(pInputStr2) , pOutputStr2);
  127. arithmetic(pInputStr3 , strlen(pInputStr3) , pOutputStr3);
  128. puts(pOutputStr1);
  129. puts(pOutputStr2);
  130. puts(pOutputStr3);
  131. return 0;
  132. }

原文地址:http://blog.csdn.net/hackbuteer1/article/details/11132567

华为2014校园招聘的机试题目相关推荐

  1. 华为2014校园招聘合肥机试

    华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...

  2. 华为2014校园招聘机试题

    2013.10.9 上午9:00开始 先吐槽一下,学校的机房.我严重怀疑学校机房的VS2010是不是坏的,折腾了半天,一个测试的hello world程序都不能跑.最后,二十多分钟之后,我放弃了,果断 ...

  3. 华为2014校园招聘面试经历

    又到了一年的就业季,我也成了找工作的茫茫大军中的一员.因为自己的本科出身实在不敢恭维(我非常热爱我的母校),所以对自己将来读博之后的出路非常迷茫.于是开始了我的找工作征程,无论将来是否读博,我想找工作 ...

  4. 华为2018实习生软件岗机试题目(2018.04.10)

    刚刚做完笔试题目,题目具体内容记得不是很清楚了,请见谅.一共三道题目,时间120分钟. 第一题 题目描述 输入一行字符串(字母或者数字,可能含重复值),按照其ASCII码顺序输出. 比如: 输入   ...

  5. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  6. 华为博士招聘上机考试题目_华为招聘机试题目

    2012 届华为校园招聘上机考试题目( 9 月 6 日下午 1 点场) 昨天去参加了华为的校园招聘上机考试,题目一共三道,都比较简单,不要求 算法效率, 也不要求对所给数据的合法性作检测, 主要还是注 ...

  7. 华为机试题目:工单调用策略

    华为机试题目来源:华为优招机试(2021年7月7) - 代码先锋网 一.工单调用策略 当小区通信设备上报警时,系统会自动生成待处理的工单,华为工单调度系统需要根据不同的策略,调度外线工程师(FME)上 ...

  8. 暴风影音2014校园招聘笔试题目-技术D卷

    /*暴风影音2014校园招聘笔试题目-技术D卷.6. m*n的网格从左上角A点走到右下角B点,每次可走一格,只能往右或下走.输出有多少种走法和所有路线数. */ #include <cstrin ...

  9. 2014校园招聘_百度2014校园招聘

    1.百度2014 校园招聘简介:  百度(Nasdaq 简称:BIDU) 是全球最大的中文搜索引擎,2000年1 月由李彦宏.徐勇两人 创立于北京中关村,致力于向人们提供"简单,可依赖&qu ...

最新文章

  1. Docker的使用(一:Docker入门程序)
  2. 博士因论文致谢走红后,回到母校演讲再刷屏!网友:是对寒门学子最好的激励...
  3. soundtouch源码分析__based on csdn :
  4. iOS----------iPhone导出手机所有短信
  5. 论文笔记:PointSIFT
  6. php上传多张图片为什么只显示一张,javascript,_js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次???,javascript - phpStudy...
  7. 防火墙(10)——禁止含有某些敏感字段发出去、限制连接数量(单ip地址)
  8. 加拿大上市公司Vinergy更新投资政策 将涉及比特币数字货币等投资
  9. 架构师必备!java三大特性用代码表现
  10. 学习document.location.href和document.location.replace 区别
  11. 为什么要使用class.forname在DriverManager.getConnection之前
  12. mysql数据库下载及安装教程
  13. 在win11和win10的edge浏览器运行flash网址设置详解
  14. Android 接入融云即时通讯踩坑
  15. thinkphp6 循环 视图_ThinkPHP6 视图
  16. 装Linux gpt还是mbr,装机、装系统必备:秒懂MBR和GPT分区表
  17. Windows 10 出现问题但您可以重试 MSA【closed】
  18. iOS/Mac OS X 汉字转拼音
  19. java linest_java基础:学生管理系统
  20. 面试中可以谎报薪资嘛?

热门文章

  1. win10桌面倒计时插件_win10 桌面如何做到清爽好看?这篇教程给你答案
  2. c语言rtu crc16,Modbus-RTU-crc16校验方法C语言实现
  3. mac mysql 设置短命令_短小强大的8个命令,分分钟帮你提高工作效率!
  4. linuxoracle静默安装应答文件修改_Oracle 19c的examples静默安装
  5. 我国最早超级计算机,全球十大超级计算机将在沪开通
  6. 天津全国计算机考试报名时间2015,2018年天津上半年计算机等级考试报名时间
  7. python几多级证书_Openssl 生成多级证书
  8. VS Code 全部快捷键一览表(巨TM全)
  9. iOS开发-缓存图片到沙盒--思路
  10. 基于安卓手机的辅助驾驶APP开发