C语言学习笔记[21]:分支语句if...else

C语言是结构化的程序设计语言

  • 顺序结构
  • 选择结构
  • 循环结构

分支语句对应的就是选择结构,循环语句对应的就是循环结构

分支语句

  • if...else
  • switch

循环语句

  • while
  • for
  • do...while

goto语句

语句

C语言中由分号隔开的就是一条语句,比如:

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
    3 + 5;
    ;//空语句
    return 0;
}

分支语句

if语句

语法结构

if(表达式)
    语句;
//表达式中的值为真则执行语句,为假则不执行
if(表达式)
    语句1;
else
    语句2;
//表达式中的值为真,则执行语句1,为假则执行语句2

C语言中如何表示真假?

非0 是 真  例如 -1 为真

0 是 假

#include <stdio.h>

int main()
{
    int age = 10;
    if(age >= 18)
        printf("成年");
    else
        printf("未成年");
    return 0;
}

通过age的值判断应该执行哪些语句

if和else后面默认只跟一条语句

#include <stdio.h>

int main()
{
    int age = 20;
    if(age >= 18)
        printf("成年\n");
    else
        printf("未成年\n");
        printf("不能喝酒\n");
    return 0;
}

 

所以如果想让if和else控制多条语句,则要给语句加上大括号

#include <stdio.h>

int main()
{
    int age = 20;
    if(age >= 18)
        printf("成年\n");
    else
    {
        printf("未成年\n");
        printf("不能喝酒\n");
    }
    return 0;
}

if...else语句的多分支情况

为什么明明age的值是60,还打印出青年呢?

因为 18 <= age < 26 这个写法是错误的,程序执行到这会先判断 18 <= age,这是成立的所以18 <= age 被替换成 1,替换后的 1 < 26 也成立,所以整个表达式为 真,最终输出青年

#include <stdio.h>

int main()
{
    int age = 20;
    if(age < 18)
        printf("少年\n");
    else if(age >= 18 && age < 26)
        printf("青年\n");
        else if(age >= 26 && age < 40)
            printf("中年\n");
            else if(age >= 40 && age < 60)
                printf("壮年\n");
                else if(age >= 60 && age < 100)
                    printf("老年\n");
                    else
                        printf("老不死\n");
    return 0;
}

悬空else

判断如下代码的结果:

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("1\n");
    else
        printf("2\n");
    return 0;
}

运行结果什么都没打印,这就是else匹配的问题

else是和离他最近的if匹配

而上述代码中的else应该和if(b == 2)匹配,但是if(a == 1)不成立,则无法进入if(b == 2)这里,所以什么都没打印

由此可知,代码的书写风格非常重要

if书写格式的对比

if(condition){
    reutrn x;
}
return y;
if(condition)
{
    return x;
}
else
{
    return y;
}

这两个代码本质是一样的,因为return运行以后,后面的代码就不执行了

但是第二种代码风格更好

#include <stdio.h>

int main()
{
    int num = 1;
    if(num == 5)
    {
        printf("1\n");
    }
    return 0;
}
#include <stdio.h>

int main()
{
    int num = 1;
    if(5 == num)
    {
        printf("1\n");
    }
    return 0;
}

这两个代码本质也是一样的,num == 5和5 == num相比,5 == num可以防止少写一个等号,从而导致if后面的表达式恒为 真

判断一个数是奇数还是偶数

#include <stdio.h>

int main()
{
    //判断一个数是否为奇数
    int num = 0;
    printf("请输入一个数字:");
    scanf("%d", &num);
    if(num % 2 == 1 || num % 2 == -1)
    {
        printf("%d是奇数\n", num);
    }
    else
    {
        printf("%d是偶数\n", num);
    }
    return 0;
}

输出1~100之间的所有奇数

#include <stdio.h>

int main()
{
    //输出1~100之间的奇数
    int i = 0;
    while(i <= 100)
    {
        if(i % 2 == 1)
        {
            printf("%d ", i);
        }
        i++;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

这个暑假,带娃就交给华为儿童手表5 Pro吧

一年一度孩子们最期待的暑期终于到啦&#xff01;在这个充足的时间段里&#xff0c;孩子们可以尽情的释放他们的热情与好奇心&#xff0c;家长们也可以努力为孩子们创造更多的回忆。但是&#xff0c;不少家长暑期带娃总是发愁&#xff0c;宝贝们玩的多&#xff0c;家长们需要注…

数据库系统概论 | MySQL | 数据定义 | 单表查询 | 嵌套查询 | 连接查询 | 带有谓词的查询

数据定义 模式的定义与删除 定义模式与删除模式&#xff1a; CREATE SCHEMA S_C_SC; DROP SCHEMA S_C_SC;进入模式&#xff1a; USE S_C_SC;建立学生表&#xff1a; CREATE TABLE Student (Sno CHAR(8) PRIMARY KEY, Sname VARCHAR(20) UNIQUE, Ssex CHAR(6), Sbirthdate …

07.C2W2.Part-of-Speech (POS) Tagging and Hidden Markov Models

往期文章请点这里 目录 OverviewPart of Speech TaggingMarkov ChainsMarkov Chains and POS TagsPOS tags as StatesTransition probabilitiesThe transition matrixInitial probabilities Hidden Markov ModelsEmission probabilitiesSummary Calculating ProbabilitiesTran…

向新求质 智赋广西,2024华为数智转型助力企业高质量发展论坛在南宁举办

7月5日以“向新求质 智赋广西”为主题的2024华为数智转型助力企业高质量发展论坛在南宁成功举办。来自广西区管企业、驻桂央企和国有企业等80余位中高层管理者&#xff0c;与华为业务变革专家、数字化转型专家共同探讨企业数字化转型新路径&#xff0c;为企业创新转型发展献计献…

SSM城镇居民社区再生资源回收系统-计算机毕业设计源码04175

摘 要 本论文介绍了一个基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;技术的城镇居民社区再生资源回收系统的设计与实现。随着社会对环境保护意识的不断提高&#xff0c;再生资源回收成为了一种重要的环保行动。然而&#xff0c;传统的再生资源回收方式存在着信…

哈佛大学 || 概念空间中学习动态的涌现:探索隐藏能力

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 今天主要看一个问题&#xff1a;在模型中的学习动态是如何涌现的。 在现代生成模型的研究与应用中&#xff0c;不断发现这些模型在处理训练数据时展现出了惊人的能力&#xff0c;这些能力很…

2024年【道路运输企业安全生产管理人员】考试及道路运输企业安全生产管理人员操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员考试参考答案及道路运输企业安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业安全生产管理人员操作证已考过的学员汇总&#xff0c;相对有效帮助道路运输企…

数字身份管理发展趋势:​​​​​​扩展身份安全能力

身份作为企业各个应用的入口&#xff0c;大量存在于企业的内部业务和外部业务中&#xff0c;身份作为最核心数据对于企业的重要性不言而喻&#xff0c;因此也往往成为攻击者的攻击目标&#xff0c;从2023年国资国企受攻击的情况也不难看出&#xff0c;针对身份的攻击累计超过37…

metersphere链接腾讯邮箱步骤

1、打开腾讯邮箱生成授权码 路径&#xff1a;设置-账户-账户安全 生成的授权码只会展示1次&#xff0c;注意保存 2、在系统设置-系统参数设置-邮件设置填写授权码和SMTP信息 SMTP信息在邮箱的客户端设置中可以获取到对应的信息 3、信息填写完后&#xff0c;可以测试连接&…

golang 项目打包部署环境变量设置

最近将 golang 项目打包部署在不同环境&#xff0c;总结一下自己的心得体会&#xff0c;供大家参考。 1、首先要明确自己目标服务器的系统类型(例如 windows 或者Linux) &#xff0c;如果是Linux 还需要注意目标服务器的CPU架构(amd或者arm) 目标服务器的CPU架构可执行命令&…

Modbus通信协议学习——调试软件

Modbus通信协议是一种广泛应用于工业自动化领域的串行通信协议&#xff0c;由Modicon公司&#xff08;现为施耐德电气Schneider Electric&#xff09;于1979年开发。该协议已成为工业电子设备之间通信的通用标准&#xff0c;支持多种设备和系统之间的数据交换。以下是对Modbus通…

值传递与引用传递:深入理解Java中的变量赋值和参数传递机制

在Java中&#xff0c;理解值传递&#xff08;值拷贝&#xff09;与引用传递&#xff08;地址拷贝&#xff09;之间的区别对于正确处理数据结构和对象至关重要。本文将通过示例代码深入探讨这两种机制&#xff0c;并解释它们如何影响程序的行为。 值传递&#xff08;值拷贝&…

第16章 主成分分析:四个案例及课后习题

1.假设 x x x为 m m m 维随机变量&#xff0c;其均值为 μ \mu μ&#xff0c;协方差矩阵为 Σ \Sigma Σ。 考虑由 m m m维随机变量 x x x到 m m m维随机变量 y y y的线性变换 y i α i T x ∑ k 1 m α k i x k , i 1 , 2 , ⋯ , m y _ { i } \alpha _ { i } ^ { T } …

Drools开源业务规则引擎(二)- Drools规则语言(DRL)

文章目录 1.DRL文件的组成&#xff1a;2.package3.import4.function5.query6.declare7.global8.rule8.1.规则属性8.2.LHS8.2.1.语法格式8.2.2.运算符优先级8.2.3.特殊的运算符1.matches, not matches2.contains, not contains3.memberOf, not memberOf4.in, notin5.soundslike6…

7.8作业

一、思维导图 二、 1】按值修改 2】按值查找&#xff0c;返回当前节点的地址 &#xff08;先不考虑重复&#xff0c;如果有重复&#xff0c;返回第一个&#xff09; 3】反转 4】销毁链表 //按值修改 int value_change(linklistptr H,datatype e,int value) {if(HNULL||empty(H…

推出PSoC™ 车规级4100S Max系列,(CY8C4147LDE 和 CY8C4147LDS)支持性能更强大的第五代CAPSENSE™技术

推出全新车规级PSoC™ 4100S Max系列。这一微控制器器件系列具有更佳的闪存密度、通用输入输出接口&#xff08;GPIO&#xff09;、CAN-FD和硬件安全性&#xff0c;扩展了采用CAPSENSE™技术的汽车车身/暖通空调&#xff08;HVAC&#xff09;和方向盘应用人机界面&#xff08;H…

Unity之Text组件换行\n没有实现+动态中英互换

前因:文本中的换行 \n没有换行而是打印出来了,解决方式 因为unity会默认把\n替换成\\n 面板中使用富文本这个选项啊 没有用 m_text.text = m_text.text.Replace("\\n", "\n"); ###动态中英文互译 using System.Collections; using System.Collections…

什么叫低频晶振?低频晶振最低频率能达到多少?低频晶振封装尺寸有哪些?

低频晶振指的是那些工作在较低频率范围内的晶体振荡器&#xff0c;通常这类振荡器的标称频率低于8MHz。这些晶振在各种电子设备中都有应用&#xff0c;尤其是在那些需要精确但不需要高频振荡的应用场景中&#xff0c;比如实时时钟(RTC)、低速串行通信接口(如UART、IC等)、以及一…

怎么才能选到好的猫咪主食冻干?公认顶尖优秀主食冻干总结

如今&#xff0c;主食冻干市场纷繁多样&#xff0c;质量水平却大相径庭。部分品牌盲目追求高营养值和利润增长&#xff0c;却忽略了猫咪健康饮食的本质需求&#xff0c;导致市场上充斥着以次充好、虚假标注日期等不法行为。更有甚者&#xff0c;部分产品未经权威第三方检测便匆…

提高LabVIEW软件的健壮性

提高LabVIEW软件的健壮性&#xff0c;即增强其在各种操作条件下的可靠性和稳定性&#xff0c;是开发过程中非常重要的一环。健壮的软件能够在面对意外输入、极端环境和系统故障时依然表现出色&#xff0c;确保系统的连续性和可靠性。以下是详细的方法和策略&#xff0c;从多个角…