华为软件工程师笔试真题解析:C语言部分
需积分: 34 116 浏览量
更新于2024-07-31
收藏 201KB DOC 举报
"华为软件工程师试题(C部分)包含了判断题、填空题和编程题,涉及C语言的基础知识和编程技巧。试题旨在测试考生对于指针操作、数据类型、数组、内存管理以及预编译等概念的理解。"
1. **判断题解析:**
- 题目1:数组定义inta[2][2]={{1},{2,3}};,a[0][1]的值为0,因为未明确初始化,所以默认为0。正确。
- 题目2:ptr是一个指向函数的指针,而非一维数组的名字。错误。
- 题目3:指针可以进行比较运算,只要它们指向相同类型的数据。正确。
- 题目4:switch语句中的c不能是float类型,因为浮点数不支持直接的case匹配。错误。
- 题目5:#define定义的宏print(x)会将"x"作为字符串处理,符合C语言宏定义规则。正确。
2. **填空题解析:**
- 题目1:sizeof(str)返回字符串数组的大小,即6个字符加上终止符,所以是7;sizeof(p)返回指针的大小,通常为4;sizeof(n)返回int类型的大小,也是4;函数参数传递时,数组名str被当作指针处理,因此sizeof(str)在函数内部仍为4。
- 题目2:test函数中,先通过getmemory分配内存,然后复制字符串"hello",最后打印,输出结果为"hello"。
- 题目3:ptr++后,ptr指向arr的第二个元素,*(ptr++)+=123相当于*ptr += 123,因此ptr现在指向的元素变为18,然后*(++ptr)访问的是arr的第三个元素,没有改变,仍然是8。所以输出为8,8。
3. **编程题解析:**
- 编程题1:编写strcmp函数,需要实现字符串比较,不使用库函数。当两个字符串相等时返回0,不等则返回-1。这需要逐个字符比较直到找到不同或遇到结束符。
- 编程题2:编写fun函数,判断字符串是否为回文,即正读反读都一样。需要遍历字符串,前后比较字符是否相同。
4. **其他知识点:**
- **预编译**:预编译是指在正式编译之前,先处理源代码中的预处理器指令,如#define、#include等。预编译在以下情况很有用:总是使用不变的大型代码块,或者多个模块共享相同的头文件和编译选项。
- **指针常量与常量指针**:
- char*const p:指针p是一个常量,它的值不能改变,但指向的字符可以修改。
- char const *p:指针p可以改变,指向的字符不可修改。
- const char *p:同上,C++中这两个声明相同,但在C中,const放在*前面表示指针本身可变,所指内容不可变。
总结,这份华为软件工程师的试题涵盖了C语言的基本语法、指针操作、数组、字符串处理、内存管理和预编译等多个方面,适合于评估应聘者的C语言基础和编程能力。
124 浏览量
2011-09-30 上传
点击了解资源详情
2015-09-27 上传
2009-09-11 上传
2009-07-23 上传
luozhongxian001
- 粉丝: 11
- 资源: 2
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查