2014届华为校园招聘机试题

news/2024/11/25 15:40:22/

华为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 256void 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;elsebreak;}//forif(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;}//forpOutputStr[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 ;}}//forif(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


http://www.ppmy.cn/news/741420.html

相关文章

华为nova8pro和华为p40pro的区别

华为nova8采用了双曲面屏幕&#xff0c;看屏幕曲率可能是瀑布屏&#xff0c;左上角双开孔&#xff0c;正面四边框很窄&#xff0c;机身修长&#xff0c;看上去还是不错的 p40pro配备一块6.58英寸屏幕&#xff0c;官方称之为“四曲水溢屏”&#xff0c;屏幕支持90Hz刷新率&…

【Java岗】9月华为校招+阿里巴巴社招完整面经

大家都知道&#xff0c;我是一个靠整理面试题存活的博主。今天收集到↓ ↓ ↓ ↓ ↓ ↓ ↓ 群友华为校招面试题一份朋友阿里巴巴社招面试题一份 面试只是对个人技术及应变能力的一次考验。只有解决了一个问题&#xff0c;你才有机会遇见下一个问题&#xff0c;共勉。 华为校招…

阿里云直播配置

一、开通阿里云直播 首先进入阿里云直播产品主页&#xff1a;https://www.aliyun.com/product/live 。 点击下方的“立即开通”。 如果是还未注册的用户请按照页面提示进行完成注册并实名认证。 2、首次进入会提示开通服务&#xff0c;点击“开通服务”&#xff0c;然后选择计…

使用SDWAN构建安全的混合WAN

使用SD-WAN构建安全的混合WAN SDWAN的爆炸已成为头条新闻了一年多。企业正在以惊人的速度采取SDWAN&#xff0c;不但可以为分支机构提供更灵活的连接和利用程序性能&#xff0c;而且可以跨全部网络提供。远程“超级用户”依托SDWAN(通过将小型台式机装备提供的安全性&#xff…

Word比较两个文档字符的区别,有截图

软件发明专利中&#xff0c;发明内容的几个段落很相近&#xff0c;比如一段描述&#xff0c;方法&#xff0c;一段描述设备。一句话包含了100多个英语单词&#xff0c; 大部分单词都是一样的&#xff0c;如果自己去尝试翻译&#xff0c;容易翻译的不一致。 所以&#xff0c;找…

图片公式提取至文档word

1.在Mathpix官网下载安装Mathpix软件。 2.下载安装MathType&#xff0c;因为Mathpix只能把公式转换为LaTeX格式&#xff0c;这个时候需要MathType将这种特殊格式再转换回我们直观的公式形式。 3.打开WPS—>插入—>对象—>MathType 4.运行Mathpix软件&#xff0c;使用…

截图表格转可编辑Word文本教程

我们知道&#xff0c;图片上的文字一般是不能编辑的&#xff0c;而在图片上编辑文字比较麻烦&#xff0c;要是需要图片中的文字&#xff0c;这时就需要将文字图片转换成Word或txt格式文档。那么&#xff0c;图片上的文字怎样才能转换成word的格式呢&#xff1f;如何将JPG、JPEG…

如何批量将图片转换为 Word 文档

概要&#xff1a;图片格式的文件在我们的电脑文件夹中随处可见&#xff0c;也是我们工作中不得不经常处理的一种文件格式类型。图片格式的种类也是非常丰富的&#xff0c;比如常见的 jpg、png、gif 等等&#xff01;那么我们可不可以将这些图片转换为 Word 文档&#xff1f;或者…