2023年华为面试编程题.doc

上传人:工**** 文档编号:550367278 上传时间:2023-11-20 格式:DOC 页数:18 大小:44.04KB
返回 下载 相关 举报
2023年华为面试编程题.doc_第1页
第1页 / 共18页
2023年华为面试编程题.doc_第2页
第2页 / 共18页
2023年华为面试编程题.doc_第3页
第3页 / 共18页
2023年华为面试编程题.doc_第4页
第4页 / 共18页
2023年华为面试编程题.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《2023年华为面试编程题.doc》由会员分享,可在线阅读,更多相关《2023年华为面试编程题.doc(18页珍藏版)》请在金锄头文库上搜索。

1、2023年华为软件校园招聘编程测验类别:软件C语言编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目规定提交文献。详见考试说明本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交规定导致不能运营或用例不通过,不予评分)。1. 删除字符串中所有给定的子串(40分)问题描述: 在给定字符串中查找所有特定子串并删除,假如没有找到相应子串,则不作任何操作。规定实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub

2、_str:需要查找并删除的特定子字符串【输出】 result_str:在str字符串中删除所有sub_str子字符串后的结果【返回】 删除的子字符串的个数注:I、 子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串abababab中,采用最左匹配子串aba,可以匹配2个aba字串。假如匹配出从左到右位置2开始的aba,则不是最左匹配,且只能匹配出1个aba字串。II、 输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。示例 输入:str = abcde123abcd123sub_str = 123输出:result_str = abcdeabcd返回

3、:2输入:str = abcde123abcd123sub_str = 1234输出:result_str = abcde123abcd123返回:0view plaincopy to clipboardprint?01.#include 02.#include 03.#include 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. c

4、har * res_p=result; 11. int count=0;/记录包含子串的个数 12. int sub_len=strlen(sub);/记录子串的长度 13. char * temp;/临时保存子串的副本 14. temp=(char *)malloc(sub_len+1); 15. memset(temp,0,sub_len+1); 16. while(*src_p) 17. 18. memcpy(temp,src_p,sub_len); 19. 20. /*原串中包含与sub完全匹配的子串*/ 21. if(!strcmp(temp,sub) 22. 23. count+;

5、 24. src_p+=sub_len; 25. 26. else 27. *res_p+=*src_p+; 28. *res_p=0; 29. free(temp); 30. return count;/返回包含子串的个数 31. 32. 33.void main() 34. 35. char result100; 36. int count=delSubStr(abcdefgde,de,result); 37. printf(The new string is:); 38. printf(%sn,result); 39. printf(count is:); 40. printf(%dn,

6、count); 41. 2. 高精度整数加法(60分)问题描述: 在计算机中,由于解决器位宽限制,只能解决有限精度的十进制整数加减法,比如在32位宽解决器计算机中,参与运算的操作数和结果必须在-231231-1之间。假如需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采用逐位运算的方式。如下: + = ?让字符串 num1=,字符串 num2=,结果保存在字符串 result = 。- + (-) = ?让字符串 num1=-,字符串 num2=-,结果保存在字符串 result = -。规定编程实现上述高精度的十进制加法。规定实现函数: void a

7、dd (const char *num1, const char *num2, char *result)【输入】num1:字符串形式操作数1,假如操作数为负,则num10为符号位-num2:字符串形式操作数2,假如操作数为负,则num20为符号位-【输出】result:保存加法计算结果字符串,假如结果为负,则result0为符号位。注:I、 当输入为正数时,+不会出现在输入字符串中;当输入为负数时,-会出现在输入字符串中,且一定在输入字符串最左边位置;II、 输入字符串所有位均代表有效数字,即不存在由0开始的输入字符串,比如0012, -0012不会出现;III、 规定输出字符串所有位均为有

8、效数字,结果为正或0时+不出现在输出字符串,结果为负时输出字符串最左边位置为-。示例 输入:num1 = 580num2 = -50输出:result = 530输入:num1 = 580num2 = -600输出:result = -20程序代码(C语言):01.#include 02.#include 03. 04./*判断字符串整数是否合法,合法返回1,否则返回0*/ 05.int isLegalNum(const char * num) 06. 07. const char * num_p=num; 08. int num_len;/记录整数长度(不包含符号位和结束符0) 09. 10

9、. /*字符串指针为空,不是合法的整数,返回0*/ 11. if(num_p=NULL) 12. return 0; 13. if(*num_p=-) 14. num_p+; 15. num_len=strlen(num); 16. 17. /*不合法整数,返回0*/ 18. if(*num_p57) 19. return 0; 20. int i; 21. for(i=0;i57|*num_p48) 25. return 0; 26. 27. return 1; 28. 29. 30./*将字符串逆序*/ 31.void reverseStr(char * result) 32. 33. i

10、nt i; 34. char temp; 35. int res_len=strlen(result); 36. for(i=0;ires_len/2;i+) 37. 38. temp=resulti; 39. resulti=resultres_len-i-1; 40. resultres_len-i-1=temp; 41. 42. 43. 44./*加法函数,用于将两个字符串形式的整数相加,结果保存在 char * result 中*/ 45.void add (const char * num1, const char * num2, char * result) 46. 47. /*判

11、断两个字符串整数 num1 和 num2 是否合法,假如不合法则规定用户重新输入*/ 48. if(!(isLegalNum(num1)&isLegalNum(num2) 49. 50. strcpy(result,对不起,您输入的字符串整数不是合法的十进制整数,请您检查后重新输入,谢谢合作!); 51. return; 52. 53. int count=0;/记录进位或借位 54. const char * num1_p;/记录第一个数的字符串起始地址 55. const char * num2_p;/记录第二个数的字符串起始地址 56. char * res_p=result;/记录结果

12、字符串起始地址 57. int num1_len=strlen(num1);/第一个数的长度 58. int num2_len=strlen(num2);/第二个数的长度 59. num1_p=num1+num1_len-1;/num1_p指向第一个数的最后一位 60. num2_p=num2+num2_len-1;/num2_p指向第二个数的最后一位 61. 62. /*加法运算,此时两个数的符号相同*/ 63. if(*num1!=-&*num2!=-)|(*num1=-&*num2=-) 64. 65. /*两个负数相加*/ 66. if(*num1=-&*num2=-) 67. 68. num1_len-; 69. num2_len-; 70.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号