华为优招线上机试题目

1、输入一行字符串,将每个单词的第一个字母,若为小写则转换为大写字母,非字母则不变,单词通过空格分开。

    解析:开始觉得要一下读进来一行,那cin还有scanf都不能用了,因为它们都是读到空格为止的,所以考虑用gets。后来发现不需要,我们可以当成一个个单词来处理,一个个读进来,输出的时候多输出空格就行了。另外注意题目中要求只转变字母,证明是有可能单词首位是其他类型字符的,开始没注意到,就输出了乱码,添加一条判断范围的语句。

 

 

2、分段压缩编码。大概就是一个字符串,先进行分段,对每一段进行编码,合起来就是该串的编码。分段以1划分,则每段的格式为j个0+一个1。将j用二进制表示,设需要m位,则用“”m-1个1+一个0+j的二进制形式”表示这个分段。若分段为1,用00表示。例子:00000000000001,有13个0,二进制表示13需要4为,所以用3个1+1个0+13的二进制,即11101101表示该分段。题目要求给一个压缩后的编码,解码求原字符串是什么。

    解析:很简单的字符串问题,涉及到二进制和十进制的互相转换。

 

 

3、模拟内存分配。总共有90块内存,每块1024byte,有一个单号,六位,从000000~999999,依次递增。输入命令格式为“命令 参数”。命令包括:“INIT 初始化块数”,输出“INIT SUCCESS”;"ALLOC 内存大小”,若可以分配,显示“ALLOC SERIAL:单号”,否则显示“ALLOC FALL”;输入“QUERY 单号”,查询成功输出“ALLOC 内存块数”,查询失败输出“QUERY FALL”;输入“FREE 单号”,释放内存,成功显示“FREE SUCCESS”,失败显示“FREE FALL”;输入QUIT,退出系统。

    解析:本地编译通过了样例,但是提交显示一个测试案例都没有通过。也没有给测试案例是什么样的。所以不知道是题目理解错了,比如单号是不是每次输入命令都要递增?也可能是我没有考虑到申请的内存不连续的问题,只要剩余块数大于所需块数,我就显示申请成功了。

posted @ 2016-08-17 15:51  翎飞蝶舞  阅读(794)  评论(0编辑  收藏  举报