【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(7)
【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(7)
一般来说,嵌入式开发岗位,学习C语言是必须的,以下基础C语言的知识考查,希望不会难倒你。本期知识点:条件语句相关知识。
1 写在前面
C语言的编程能力在嵌入式开发中,还是非常重要的。为了帮助刚入门C语言编程的童鞋尽快掌握其核心基础知识,我会从本期开始输出若干期经典的笔试原题解析,力求从原题的角度深入剖析每一个知识点。
2 本期知识点
本期给大家带来的基础知识点是:条件语句
-
条件语句的分类:C语言中,条件语句有以下几个关键字:
- if :表示如果成立的执行
- else if : 表示另一个判断分支的执行
- else : 表示最后一个其他分支的执行
-
条件语句的嵌套:if条件语句是允许嵌套的,比如像这样,但是一定要注意的是,当if条件语句嵌套使用时,一定要注意对齐,否则可能会造成逻辑错误。当存在条件语句嵌套时,else 分支与最近的一个if进行配对。
if (xxx) {
if (yyy) {
if (zzz) {
} else if (aaa) {
} else {
}
}
}
-
条件语句的偏门知识:
在条件语句中
- if (0) 是允许存在的,表示此分支永远不会执行,与 while(1) 的用法类似
- else 的那个分支是不需要 ( ) 和逻辑判断语句的,直接大括号加执行体;这一点很多新手会忽略。
- 任何一个条件语句,可能没有else,也可能没有elseif,但一定不能没有if。
3 几道笔试原题
3.1 考察点:条件语句的分类
题目原题:
下列条件语句中,不符合语法规范的是()?
A
if (xxx) {
}
B
if (xxx) {
} else (yyy) {
}
C
if (xxx) {
} else if (yyy) {
} else {
}
D if (xxx) {
} else if (yyy) {
}
题目考查的知识点:C语言的条件语句定义
题目解析:
A选项正确:它只有一个if判断分支,这在语法上是允许的;
B选项错误:它本身想写一个if-else结构的判断语句,结果在else分支中又加了一个 yyy 的判断,这在语法上是不允许的;
C选项正确:这是一个标准的if -elseif-else条件分支结构的定义,完全符合语法规则;
D选项正确:这是一个if-elseif结构的条件分支定义,这也是符合语法规则的。
题目答案:B
3.2 考察点:条件语句的嵌套
题目原题:
以下程序的输出结果是( )
main(){
int x = 2, y = -1, z = 2;
if (x < y)
if (y < 0) z = 0;
else z = z + 1;
printf(“%d\n”, z);
}
A 3
B 2
C 1
D 0
题目考查的知识点:C语言的条件语句嵌套、展开的问题
C语言中,条件语句在嵌套展开时,必须要注意其层次结构。
题目解析:
做这样的题目,建议把题目中省略的大括号加上,还原其层次结构,如下:
main(){ int x = 2, y = -1, z = 2; if (x < y) { //第一个if就不成立 if (y < 0) { z = 0; } else { // 与最近的一个if配对 z = z + 1; } } printf(“%d\n”, z); }
由此可知,第一个 if (x < y) =》if (2 < -1) 就不成立,所以下面的条件语句里面的语句根本就不会执行。
z的值还是原理的值。即为2。
题目答案:B
3.3 考察点:条件语句的妙用
题目原题:
有下面一段使用条件语句的示例代码,下面关于它的所法错误的是()
int x = 1;
int y = 2;
int z = 0;
if (0) {
z = x + y;
} else if (x < y) {
z = x - y;
} else {
z = x * y;
}
A 这个条件语句执行完后,Z的值是-1
B if(0)这一行存在语法错误
C 这是一个标准的if-elseif-else结构的条件语句
D 当x与y的值交换之后,运行该示例代码后,z的值为2
题目考查的知识点:
C语言中,条件语句中if (0) 是合法的。
题目解析:
由于x=1 y=2, 所以条件语句真正运行的是 else if (x < y) 这个语句,所以z=x-y,值为-1
A 选项正确,如上分析;
B 选项错误, if (0) 在语法上市允许的,0值等同False,表示该本分支不成立;
C 选项正确,这就是对if-elseif-else条件语句的正确描述;
D 选项正确,当两者的值交换后,else 语句生效,所以z = x * y,即值为 2
题目答案:B
4 更多分享
架构师李肯(全网同名),一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得RT-Thread官方技术社区原创技术博文优秀奖,荣获CSDN博客专家、CSDN物联网领域优质创作者、2021年度CSDN&RT-Thread技术社区之星、2022年RT-Thread全球技术大会讲师、RT-Thread官方嵌入式开源社区认证专家、RT-Thread 2021年度论坛之星TOP4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!
- 点赞
- 收藏
- 关注作者
评论(0)