根据提供的笔试题目及其答案,我们可以总结出一系列与嵌入式软件开发相关的知识点: ### 1. 基础数学计算 题目中提到的数学表达式 `(a+b)*c/2`,这涉及到基础的数学计算规则。在 C 语言中,乘法和除法的优先级相同,但从左至右进行计算。因此,`(a+b)*c/2` 等价于 `((a+b)*c)/2`。 **知识点总结:** - **运算符优先级**:了解各种运算符的优先级是编写正确表达式的前提。 - **整数除法**:在 C 语言中,两个整数相除的结果为整数,例如 `1/2` 的结果为 `0`。 - **浮点数运算**:为了避免整数除法的问题,可以将其中一个操作数转换为浮点数,如 `1.0/2` 或者 `1/2.0`。 ### 2. 文件读写模式 题目中的选项涉及文件的打开模式: - `ab`:追加模式打开文件。 - `rb+`:以二进制读写模式打开文件。 - `wb`:覆盖模式打开文件,用于写入二进制数据。 - `wb+`:以二进制读写模式打开文件,并覆盖原有内容。 **知识点总结:** - **文件打开模式**:理解不同模式之间的区别对于正确读写文件至关重要。 - **二进制模式**:当处理二进制数据时,使用 `b` 模式可以避免数据被错误地解释或转换。 ### 3. 字符串运算 题目中包含字符串运算的示例,如 `printf("%c\n",'a'+(x-'a'+1));` 这里 `x` 的值为 `'f'`,因此 `'a'+(x-'a'+1)` 的结果为 `'g'`。 **知识点总结:** - **字符和整数之间的转换**:在 C 语言中,字符可以被当作整数来处理,例如 `'a' + 1` 会得到下一个字符。 - **字符输出**:通过 `printf` 函数可以输出单个字符,格式化字符串应使用 `%c`。 ### 4. 位运算 题目中出现位运算的例子,如 `7 >> 1`,这里的 `>>` 表示右移运算符,即将二进制数向右移动一位,相当于除以 2。 **知识点总结:** - **位运算符**:位运算符包括 `&`(按位与)、`|`(按位或)、`^`(按位异或)、`~`(按位取反)、`<<`(左移)和 `>>`(右移)。 - **位运算的应用**:位运算在嵌入式系统中非常常见,主要用于控制硬件寄存器、实现高效的数据压缩等场景。 ### 5. 数组指针 题目中提到了数组 `int a[4];` 和其指针的操作。数组名 `a` 实际上是一个指向数组首元素的指针。 **知识点总结:** - **数组与指针的关系**:在 C 语言中,数组名通常被视为指向数组首元素的指针。 - **指针操作**:通过对指针的增减操作,可以访问数组中的不同元素。 ### 6. 函数宏定义 题目中出现了函数宏的定义,如 `#define MOD(xy) xy`。使用函数宏时需要注意括号的作用以及宏展开的方式。 **知识点总结:** - **宏定义**:宏定义是一种预处理器指令,可以用来定义常量、函数等。 - **函数宏的注意事项**:在使用函数宏时,应该注意括号的使用,以避免意外的行为。 ### 7. 结构体大小 题目中给出了一个结构体 `struct {short a; char b; float c; } cs;` 并询问其大小。 **知识点总结:** - **结构体大小**:结构体的大小取决于成员变量的对齐方式和编译器的具体实现。 - **内存对齐**:为了提高性能,编译器可能会调整结构体成员变量的位置,使得它们能够按照特定的边界对齐。 ### 8. 条件表达式 题目中包含了条件表达式的例子,如 `if (!(--a)) x--;` 这里 `a` 的初始值为 `1`,因此 `--a` 的值为 `0`,表达式 `!(--a)` 为真,执行 `x--`。 **知识点总结:** - **逻辑运算符**:`!` 表示逻辑非,用于反转布尔值。 - **条件语句**:`if` 语句可以根据条件的真假执行不同的代码块。 ### 9. 字符串比较 题目中出现了字符串比较的例子,如 `strcmp("3.14", "3.278")`。`strcmp` 用于比较两个字符串,如果第一个字符串小于第二个,则返回负数;如果相等,则返回 0;如果大于,则返回正数。 **知识点总结:** - **字符串比较**:`strcmp` 是一个常用的字符串比较函数,用于判断两个字符串是否相等或者它们的顺序关系。 - **字符串函数库**:C 语言提供了丰富的字符串操作函数,如 `strlen`、`strcpy` 等。 ### 10. 循环控制 题目中涉及循环控制的例子,如 `for` 循环的使用。通过 `for` 循环可以迭代数组或其他数据结构。 **知识点总结:** - **循环控制结构**:`for` 循环是一种常用的循环控制结构,适用于已知循环次数的情况。 - **循环终止条件**:在设计循环时,需要明确循环的终止条件,以避免无限循环的发生。 ### 11. 函数指针 题目中还涉及了函数指针的概念,如使用函数指针来调用不同的函数。 **知识点总结:** - **函数指针**:函数指针是指向函数的指针,可以用来动态选择和调用不同的函数。 - **函数指针的应用**:函数指针在回调函数、策略模式等方面有广泛的应用。 以上知识点涵盖了基础的 C 语言语法、数据结构和算法,这些都是嵌入式软件工程师必备的基础知识。掌握这些知识点不仅有助于通过笔试,更重要的是能够在实际工作中灵活运用。





















1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是
A.(a+b)*c/2
B.(1/2)*(a+b)*c
C.(a+b)*c*1/2
D.c/2*(a+b)
参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
2:为了向二进制文件尾部增加数据,打开文件的方式应采用
A.″ab″
B.″rb+″
C.″wb″
D.″wb+″
参考答案:D
3:下述程序执行后的输出结果是
#include
main()
{
int x='f';
printf("%c\n",'a'+(x-'a'+1));
}
A.g
B.h
C.i
D.j
参考答案:A
4:C语言中,下列运算符优先级最高的是
B.%
C.>>
D.= =
参考答案:A
5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*a
B.a [ 0 ]
C.a
D.a++
参考答案:D
6:执行语句“ k=7>>1; ”后,变量 k 的当前值是
A.15
B.31
C.3
D.1
参考答案:C
7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
D.int
参考答案:D
8:若main()函数带参数,参数个数最多是
A.0
B.1
剩余7页未读,继续阅读


- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 珠海某项目初步、施工图设计任务书.docx
- 仿coco点餐系统的微信小程序.zip
- JAVA版免费开源的微信管家平台。支持微信公众号、小程序、第三方平台等。平台已经实现了公众号基础管理、群发、系统权限、抽
- 某碱厂锅炉安装轨道及起重机安装施工方案.doc
- 高层住宅6-2007.10.doc
- 商务英语案例教学研究.doc
- 9万平住宅楼群工程全套施工组织设计(190余页).doc
- 房地产销售培训全案.doc
- 人才盘点:让合适的人上车.docx
- pe-管施工安装流程.doc
- 钢结构焊接变形及焊接残余应力的控制措施.doc
- 写字间市调问卷.doc
- Mac arm版本微信小程序F12 devtools.zip
- We重邮 - 微信小程序(1).zip
- 钻井分类词汇-中英俄文对照.doc
- 工程估价第2章.ppt


