
深圳MTK公司嵌入式软件工程师笔试题
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
本资料包含深圳MTK公司招聘嵌入式软件工程师的笔试题目,内容涉及C语言编程、数据结构与算法及操作系统等多方面知识。
在MTK深圳公司的嵌入式软件工程师笔试中,可能会遇到各种类型的编程题目。以下是一些可能的考题及其解析:
1. **宏定义与函数调用**
题目给出代码`#define Area(R) pi*R*R`用于计算圆面积。尝试使用 `Area(r1-r2)` 会出错,因为宏展开时直接将 `r1-r2` 相乘而不是分别乘以 `pi`。正确的做法是定义一个真正的函数来接受半径参数并返回结果。
2. **函数指针**
对于问题函数 `int compare(int a, int b)` 的函数指针 P 应该这样定义:
```c
int (*P)(int, int);
```
这表示 P 是指向名为`compare`的函数的指针,此函数接收两个整数参数并返回一个整数值。
3. **字符串排序**
函数 `sub(char *s, int num)` 使用冒泡排序算法将字符串中的字符按字典顺序排列。在给定的主程序中,经过该函数处理后,`CEAeded` 字符串会变为 `AceeEd` 并打印出来。
4. **不使用第三个变量交换两个变量**
通过异或操作可以实现无符号字符类型变量 a 和 b 的值互换:
```c
a = a ^ b;
b = a ^ b;
a = a ^ b;
```
5. **动态内存分配与字符串复制**
函数 `GetMemory1` 使用 `malloc` 正确地为数据分配了内存并进行了字符串拷贝,而函数 `GetMemory2` 返回的是局部变量的地址,在函数结束后该地址将无效。因此,调用时会打印出 Have a good day! 和未定义的内容。
6. **逆序创建链表**
为了在循环中每次添加新节点时将其插入到链表头部以形成逆序列表,需要执行如下操作:
```c
p->next = Head;
Head = p;
```
7. **判断链表中心对称**
函数 `Is_symmeic` 用于检查链表是否是中心对称的。首先将所有节点的数据存储到数组 D 中,然后从中间位置开始比较:
```c
d = (n + 1) / 2;
head = head->next;
while(head) {
...
D[i] = head->data;
head = head->next;
}
```
在此之后,通过从数组中间开始向两侧比较元素来检查对称性。
8. **字符串大小写字母转换**
函数 `change_move` 可能要求将所有小写字母移到字符串末尾并保持原有的相对顺序。具体实现取决于题目需求,但基本思路是遍历字符串,并使用两个指针分别跟踪大写和小写字母的位置后合并。
以上是对MTK深圳公司嵌入式软件工程师笔试题目的分析与解答。这些题目涵盖了C语言的基础知识如宏、函数指针、内存管理及链表操作等,在嵌入式开发中非常重要。
全部评论 (0)


