2012华为面试-编程题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出:result_str = "abcde123abcd123"
返回:0
view plaincopy to clipboardprint?
01.#include <stdio.h>
02.#include <string.h>
03.#include <stdlib.h>
04.
05./*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/
06.int delSubStr(char * src,char * sub,char * result)
07.{
08. char * src_p=src;
09. char * sub_p=sub;
10. char * res_p=result;
11. int count=0;//记录包含子串的个数
37. printf("The new string is:");
38. printf("%s\n",result);
39. printf("count is:");
40. printf("%d\n",count);
41.}
2.高精度整数加法(60分)
问题描述:
在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,
【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果
【返回】删除的子字符串的个数
注:
I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:
在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果
匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。
参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊
的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下:
9876543210 + 1234567890 = ?
让字符串num1="9876543210",字符串num2="1234567890",结果保存在字符串result = "11111111100"。
问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
【输入】str:输入的被操作字符串
sub_str:需要查找并删除的特定子字符串
II、输入字符串所有位均代表有效数字,即不存在由'0'开始的输入字符串,比如"0012", "-0012"不会出现;
III、要求输出字符串所有位均为有效数字,结果为正或0时'+'不出现在输出字符串,结果为负时输出字符串最左边位置为'-'。
示例
输入:num1 = "580"
num2 = "-50"
输出:result = "530"
-9876543210 + (-1234567890) = ?
让字符串num1="-9876543210",字符串num2="-1234567890",结果保存在字符串result = "-11111111100"。
要求编程实现上述高精度的十进制加法。
要求实现函数:
void add (const char *num1, const char *num2, char *result)
28. *res_p='\0';
29. free(temp);
30. return count;//返回包含子串的个数
31.}
32.
33.void main()
34.{
35. char result[100];
36. int count=delSubStr("abcdefgde","de",result);
2010年华为软件校园招聘编程测验
类别:软件C语言
编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明]
本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。
1.删除字符串中所有给定的子串(40分)
II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。
示例
输入:str = "abcde123abcd123"
sub_str = "123"
输出:result_str = "abcdeabcd"
返回:2
输入:str = "abcde123abcd123"
sub_str = "1234"
18. memcpy(temp,src_p,sub_len);
19.
20. /*原串中包含与sub完全匹配的子串*/
21. if(!strcmp(temp,sub))
22. {
23. count++;
24. src_p+=sub_len;
25. }
26. else
27. *res_p++=*src_p++;
【输入】num1:字符串形式操作数1,如果操作数为负,则num1[0]为符号位'-'
num2:字符串形式操作数2,如果操作数为负,则num2[0]为符号位'-'
【输出】result:保存加法计算结果字符串,如果结果为负,则result[0]为符号位。
注:
I、当输入为正数时,'+'不会出现在输入字符串中;当输入为负数时,'-'会出现在输入字符串中,且一定在输入字符串最左边位置;
输入:num1 = "580"
num2 = "-600"
输出:result = "-20"
程序代码(C语言):
01.#include <stdio.h>
02.#include <string.h>
03.
04./*判断字符串整数是否合法,合法返回'1',否则返回'0'*/
05.int isLegalNum(const char * num)
12. int sub_len=strlen(sub);//记录子串的长度
13. 源自文库har * temp;//临时保存子串的副本
14. temp=(char *)malloc(sub_len+1);
15. memset(temp,'\0',sub_len+1);
16. while(*src_p)
17. {
相关文档
最新文档