版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华为2014笔试算法题汇总1.通过键盘输入一串小写字母(az)组成的字符串。请编写一个字符串过滤程序, 若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“ abacacde过滤结果为“ abcde 0要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char*pOutputStr);【输入】pInputStr:输入字符串lInputLen :输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例输
2、入:“deefd'输出:“def”输入:“afafafaf”输出:“af”输入:“pppppppp”输出:“p”main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实 现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响cpp view plaincopy/#include <iostream>#include <cassert>using namespace std;bool g_flag26;void stringFilter(con
3、st char *pInputStr, long lInputLen, char *pOutputStr)assert(pInputStr != NULL);int i = 0;if (pInputStr = NULL | lInputLen <= 1)return;const char *p = pInputStr;while(*p != '0')if (g_flag(*p - 'a')p+;elsepOutputStri+ = *p;g_flag*p - 'a' = 1;p+;pOutputStri = '0;int main(
4、)memset(g_flag,0,sizeof(g_flag);char input = "abacacde"char *output = new charstrlen(input) + 1;stringFilter(input,strlen(input),output);cout<<output<<endl;delete output;return 0;2.通过键盘输入一串小写字母(az)ffl成的字符串。请编写一个字符串压缩程序, 将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1、仅压缩连续重复出现的字符。比如字符串&qu
5、ot;abcbc”由于无连续重复字符,压缩后的字符串还是"abcbc"。2、压缩字段的格式为"字符重复的次数十字符”。例如:字符串"xxxyyyyyyz”压 缩后就成为"3x6yz"。要求实现函数:void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】pInputStr:输入字符串lInputLen :输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】只需要完成该函数功能算法,中间不需要有任
6、何IO的输入输出示例输入:“cccddeci输出:“3c2de2C输入:“adef 输出:“adef输入:“pppppppp” 输出:“8p”cpp view plaincopy/#include <iostream>#include <cassert>using namespace std;void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)const char *p = pInputStr;int num = 1;int i = 0;p+;while(*p != NULL)wh
7、ile(*p = *(p-1)&& *p != NULL)num+;P+;if (num > 1)int size = 0;int temp = num;while(num)/计算位数size+;num /= 10;num = 1;for (int j = size; j > 0; j-)pOutputStri+j-1 = '0'+ temp%10;temp /= 10;i +=size;pOutputStri+ = *(p-1);p+;elsepOutputStri+ = *(p-1);p+;pOutputStri = '0;int mai
8、n()char input = "cccddecc"char *output = new charstrlen(input) + 1;stringZip(input,strlen(input),output);cout<<output<<endl;return 0;3.通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果 字符串。输入字符串的格式为:“操作数1运算符操作数2",“操作数”与“运算符”之 间以一个空格隔开。补充说明:1、操作数为正整数,不需要考虑计算结果溢出的情况。2、若输入算式格式错误,输出结果为“ 0”。
9、要求实现函数: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/#include <iostream>using namespa
10、ce std;void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)const char *input = pInputStr;char *output = pOutputStr;int sum = 0;int operator1 = 0;int operator2 = 0;char *temp = new char5;char *ope = temp;while(*input != ' ') / 获得操作数 1sum = sum*10 + (*input+ - '0');
11、input+;operatori = sum;sum = 0;while(*input !='')*temp+ = *input+;input+;*temp = '0'if (strlen(ope) > 1 )*output+ = '0'*output = '0'return;sum = sum*10 + (*input+ - '0');operator2 = sum;sum = 0;switch (*ope)case '+':itoa(operator1+operator2,pOutputS
12、tr,10); break;case '-':itoa(operator1-operator2,pOutputStr,10);break;default:*output+ = '0'*output = '0'return;int main()char input = "4 - 7"char output口 =" "arithmetic(input,strlen(input),output);cout<<output<<endl;return 0;4输入1-50个数字,求出最小数和最大
13、数的和cpp view plaincopy/华为2014年机试题1:输入1-50个数字,求出最小数和最大数的和/输入以逗号隔开#include<stdio.h>#define N 50void sort(int a口,int n);int main(void)char str100;int aN=0;gets(str);/度点1:动态的输入1-50个整数,不能确定个数,只能用字符串输入,然后分离出来int i=0;int j=0;int sign=1;while(stri!='0')if(stri!=',') /输入时要在半角输入if(stri=
14、39;-') 要点:2:有负整数的输入/ i+; 易错点1sign=-1;else if(stri!='0') 不用elsefl勺话,负号也会减去'0'aj=aj*10 + stri-'0' /要点3:输入的可以是多位数i+;if(stri=',' | stri='0') / 这个判断是在 i 自加以后aj=aj*sign; 易错点 2sign=1; /易错点 3j+; /j就是a数组的个数范围0到j-1sort(a,j);printf("Max number + Min number = %d",a0+aj-1);ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术经济学课件-不确定性分析
- 妊娠合并甲状腺功能减退的临床护理
- 类丹毒的临床护理
- 《机械设计基础》课件-第10章
- 银屑病的临床护理
- 《证券经纪人培训》课件
- JJF(陕) 010-2019 标准厚度块校准规范
- 《计算器定时器》课件
- 制定图文并茂的工作计划
- 秋季素质测评与综合评价体系计划
- 万达经营管理之宁波万达突发事件应急预案
- GB 5009.34-2022 食品安全国家标准 食品中二氧化硫的测定
- 进出境动植物检疫除害处理单位核准——延续申请
- 中学生体育课运动损伤预防和处理
- 北京大学数字图像处理(冈萨雷斯)(课堂PPT)
- 无功补偿装置安装验收表格
- 进修汇报—疼痛
- xx年度中层干部述职指标及评分表
- 杨世登英语新闻听力教程 原文答案 Unit完整
- 过热蒸汽焓值表
- 观察描写人物的情绪心态
评论
0/150
提交评论