华为2014校园招聘的机试题目
华为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” 注:格式错误
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #define MAXCHAR 256
- void stringFilter(const char* pInputStr , long lInputLen , char* pOutputStr)
- {
- bool hash[26] = {0}; //统计字符是否出现
- int i , j;
- for(i = 0 , j = 0 ; i < lInputLen; ++i)
- {
- if(false == hash[pInputStr[i] - 'a']) //该字符还木有出现过
- {
- hash[pInputStr[i] - 'a'] = true;
- pOutputStr[j++] = pInputStr[i];
- }
- }
- pOutputStr[j] = '\0';
- }
- void stringZip(const char* pInputStr , long lInputLen , char* pOutputStr)
- {
- int i , j , k , num;
- char buffer[20];
- for(i = 0 , k = 0; i < lInputLen; )
- {
- num = 0;
- for(j = i + 1 ; j < lInputLen ; ++j)
- {
- if(pInputStr[i] == pInputStr[j]) //统计字符串中每个字符后面连续出现的重复字母次数
- ++num;
- else
- break;
- }//for
- if(0 != num) //num可能是两位或三位或更多位的整数
- {
- memset(buffer , 0 , sizeof(buffer));
- itoa(num + 1 , buffer , 10); //将整数按10进制转换为字符串
- strcpy(pOutputStr + k , buffer);
- k += strlen(buffer);
- }
- pOutputStr[k++] = pInputStr[i];
- i = i + num + 1;
- }//for
- pOutputStr[k] = '\0';
- }
- void arithmetic(const char* pInputStr , long lInputLen , char* pOutputStr)
- {
- int i , j , num1 , num2 , result , num_space;
- char buffer[4];
- bool add , sub;
- add = sub = false;
- for(i = 0 , num_space = 0 ; i < lInputLen ; ++i)
- {
- if(pInputStr[i] == ' ')
- ++num_space;
- }
- if(2 != num_space) //空格数非法
- {
- pOutputStr[0] = '0';
- pOutputStr[1] = '\0';
- return ;
- }
- num1 = num2 = 0;
- for(i = 0 ; pInputStr[i] != ' ' ; ++i)
- {
- if(pInputStr[i] >= '0' && pInputStr[i] <= '9')
- num1 = num1 * 10 + pInputStr[i] - '0';
- else //第一个操作数中有非法字符
- {
- pOutputStr[0] = '0';
- pOutputStr[1] = '\0';
- return ;
- }
- }
- for(j = i + 1 ; pInputStr[j] != ' ' ; ++j);
- if(1 != j - i - 1) //运算符长度不合法
- {
- pOutputStr[0] = '0';
- pOutputStr[1] = '\0';
- return ;
- }
- else //操作符的长度为1
- {
- if('+' != pInputStr[i+1] && '-' != pInputStr[i+1]) //操作符号非法
- {
- pOutputStr[0] = '0';
- pOutputStr[1] = '\0';
- return ;
- }
- else
- {
- if('+' == pInputStr[i+1])
- add = true;
- if('-' == pInputStr[i+1])
- sub = true;
- for(i = j + 1 ; i < lInputLen ; ++i)
- {
- if(pInputStr[i] >= '0' && pInputStr[i] <= '9')
- num2 = num2 * 10 + pInputStr[i] - '0';
- else //第二个操作数中有非法字符
- {
- pOutputStr[0] = '0';
- pOutputStr[1] = '\0';
- return ;
- }
- }//for
- if(add)
- result = num1 + num2;
- else if(sub)
- result = num1 - num2;
- memset(buffer , 0 , sizeof(buffer));
- itoa(result , buffer , 10); //将整数按10进制转换为字符串
- strcpy(pOutputStr , buffer);
- }//esle
- }//else
- }
- int main(void)
- {
- printf(" -- 2014年华为校园招聘机试题 (http://blog.csdn.net/hackbuteer1) --\n\n");
- char pInputStr1[] = {"aaabbbcccdde"};
- char pInputStr2[] = {"aaaaaaaaaaaabbcddddddddddddddddde"};
- char pInputStr3[] = {"3 + 4"};
- char pOutputStr1[MAXCHAR] = {0};
- char pOutputStr2[MAXCHAR] = {0};
- char pOutputStr3[MAXCHAR] = {0};
- stringFilter(pInputStr1 , strlen(pInputStr1) , pOutputStr1);
- stringZip(pInputStr2 , strlen(pInputStr2) , pOutputStr2);
- arithmetic(pInputStr3 , strlen(pInputStr3) , pOutputStr3);
- puts(pOutputStr1);
- puts(pOutputStr2);
- puts(pOutputStr3);
- return 0;
- }
原文地址:http://blog.csdn.net/hackbuteer1/article/details/11132567
华为2014校园招聘的机试题目相关推荐
- 华为2014校园招聘合肥机试
华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...
- 华为2014校园招聘机试题
2013.10.9 上午9:00开始 先吐槽一下,学校的机房.我严重怀疑学校机房的VS2010是不是坏的,折腾了半天,一个测试的hello world程序都不能跑.最后,二十多分钟之后,我放弃了,果断 ...
- 华为2014校园招聘面试经历
又到了一年的就业季,我也成了找工作的茫茫大军中的一员.因为自己的本科出身实在不敢恭维(我非常热爱我的母校),所以对自己将来读博之后的出路非常迷茫.于是开始了我的找工作征程,无论将来是否读博,我想找工作 ...
- 华为2018实习生软件岗机试题目(2018.04.10)
刚刚做完笔试题目,题目具体内容记得不是很清楚了,请见谅.一共三道题目,时间120分钟. 第一题 题目描述 输入一行字符串(字母或者数字,可能含重复值),按照其ASCII码顺序输出. 比如: 输入 ...
- 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- 华为博士招聘上机考试题目_华为招聘机试题目
2012 届华为校园招聘上机考试题目( 9 月 6 日下午 1 点场) 昨天去参加了华为的校园招聘上机考试,题目一共三道,都比较简单,不要求 算法效率, 也不要求对所给数据的合法性作检测, 主要还是注 ...
- 华为机试题目:工单调用策略
华为机试题目来源:华为优招机试(2021年7月7) - 代码先锋网 一.工单调用策略 当小区通信设备上报警时,系统会自动生成待处理的工单,华为工单调度系统需要根据不同的策略,调度外线工程师(FME)上 ...
- 暴风影音2014校园招聘笔试题目-技术D卷
/*暴风影音2014校园招聘笔试题目-技术D卷.6. m*n的网格从左上角A点走到右下角B点,每次可走一格,只能往右或下走.输出有多少种走法和所有路线数. */ #include <cstrin ...
- 2014校园招聘_百度2014校园招聘
1.百度2014 校园招聘简介: 百度(Nasdaq 简称:BIDU) 是全球最大的中文搜索引擎,2000年1 月由李彦宏.徐勇两人 创立于北京中关村,致力于向人们提供"简单,可依赖&qu ...
最新文章
- Docker的使用(一:Docker入门程序)
- 博士因论文致谢走红后,回到母校演讲再刷屏!网友:是对寒门学子最好的激励...
- soundtouch源码分析__based on csdn :
- iOS----------iPhone导出手机所有短信
- 论文笔记:PointSIFT
- php上传多张图片为什么只显示一张,javascript,_js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次???,javascript - phpStudy...
- 防火墙(10)——禁止含有某些敏感字段发出去、限制连接数量(单ip地址)
- 加拿大上市公司Vinergy更新投资政策 将涉及比特币数字货币等投资
- 架构师必备!java三大特性用代码表现
- 学习document.location.href和document.location.replace 区别
- 为什么要使用class.forname在DriverManager.getConnection之前
- mysql数据库下载及安装教程
- 在win11和win10的edge浏览器运行flash网址设置详解
- Android 接入融云即时通讯踩坑
- thinkphp6 循环 视图_ThinkPHP6 视图
- 装Linux gpt还是mbr,装机、装系统必备:秒懂MBR和GPT分区表
- Windows 10 出现问题但您可以重试 MSA【closed】
- iOS/Mac OS X 汉字转拼音
- java linest_java基础:学生管理系统
- 面试中可以谎报薪资嘛?
热门文章
- win10桌面倒计时插件_win10 桌面如何做到清爽好看?这篇教程给你答案
- c语言rtu crc16,Modbus-RTU-crc16校验方法C语言实现
- mac mysql 设置短命令_短小强大的8个命令,分分钟帮你提高工作效率!
- linuxoracle静默安装应答文件修改_Oracle 19c的examples静默安装
- 我国最早超级计算机,全球十大超级计算机将在沪开通
- 天津全国计算机考试报名时间2015,2018年天津上半年计算机等级考试报名时间
- python几多级证书_Openssl 生成多级证书
- VS Code 全部快捷键一览表(巨TM全)
- iOS开发-缓存图片到沙盒--思路
- 基于安卓手机的辅助驾驶APP开发