【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(7)

架构师李肯 发表于 2022/11/30 23:19:01 2022/11/30
【摘要】 一般来说,嵌入式开发岗位,学习C语言是必须的,以下基础C语言的知识考查,希望不会难倒你。本期知识点:条件语句相关知识。

【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华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。