1 / 28
文档名称:

2012华为面试-编程题.doc

格式:doc   大小:1,670KB   页数:28页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2012华为面试-编程题.doc

上传人:幸福人生 2022/7/13 文件大小:1.63 MB

下载得到文件列表

2012华为面试-编程题.doc

相关文档

文档介绍

文档介绍:2012华为面试-编程题
2010年华为软件校园招聘编程测验
类别:软件C语言
编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明]
本试题采用自动测试用例num2="1234567890",结果保存在字符串 result = "**********"。
-9876543210 + (-1234567890) = ?
让字符串 num1="-9876543210",字符串 num2="-1234567890",结果保存在字符串 result = "-**********"。
要求编程实现上述高精度的十进制加法。
要求实现函数:
void add (const char *num1, const char *num2, char *result)
【输入】num1:字符串形式操作数1,如果操作数为负,则num1[0]为符号位'-'
num2:字符串形式操作数2,如果操作数为负,则num2[0]为符号位'-'
【输出】result:保存加法计算结果字符串,如果结果为负,则result[0]为符号位。
注:
I、 当输入为正数时,'+'不会出现在输入字符串中;当输入为负数时,'-'会出现在输入字符串中,且一定在输入字符串最左边位置;
II、 输入字符串所有位均代表有效数字,即不存在由'0'开始的输入字符串,比如"0012", "-0012"不会出现;
III、 要求输出字符串所有位均为有效数字,结果为正或0时'+'不出现在输出字符串,结果为负时输出字符串最左边位置为'-'。
示例
输入:num1 = "580"
num2 = "-50"
输出:result = "530"
输入:num1 = "580"
num2 = "-600"
输出:result = "-20"
程序代码(C语言):
01.#include <>
02.#include <>
03.
04./*判断字符串整数是否合法,合法返回'1',否则返回'0'*/
isLegalNum(const char * num)
06.{
07. const char * num_p=num;
08. int num_len;//记录整数长度(不包含符号位和结束符'\0')
09.
10. /*字符串指针为空,不是合法的整数,返回'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_p<=48||*num_p>57)
19. return 0;
20. int i;
21. for(i=0;i<num_len;i++)
22. {
23. /*不合法整数,返回'0'*/
24. if(*num_p>57||*num_p<48)
25. return 0;
26. }
27. return 1;
28.}
29.
30./*将字符串逆序*/
reverseStr(char * result)
32.{
33. int i;
34. char temp;
35. int res_len=strlen(result);
36. for(i=0;i<res_len/2;i++)
37. {
38. temp=result[i];
39. result[i]=result[res_len-i-1];
40. result[res_len-i-1]=temp;
41. }
42.}
43.
44./*加法函数,用于将两个字符串形式的整数相加,结果保存在 char * result 中*/

最近更新