分支与循环

目录

1. if语句

1)if

2)  else

3)分支中包含多条语句

4)if嵌套

2.关系操作符

3.条件操作符

4.逻辑操作符:&&  ||  !

1) 逻辑取反运算符 !​编辑

2 与运算符​编辑

3) 或运算符​编辑

4) 闰年的判断

5) 短路


 

C语言是结构化的程序设计语言,这里的结构指的是顺序结构选择结构循环结构,C语言是能够实现这三种结构,通过使用 if 、switch 实现分支结构,使用 for 、while 、do while 实现循环结构

1. if语句
1)if
if ( 表达式 )//表达式成立(为真)则语句执行,表达式不成立(为假)则语句不执行
{
    语句
}
        

在C语言中,0为假,非0表示真,如果表达式的结果是0则语句不执行,如果表达式的结果不是0则语句执行

输入一个整数,判断是否为奇数:

#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if(num % 2 == 1)
    printf("%d 是奇数\n", num);
    return 0;
}
2)  else

如果一个数不是奇数那就是偶数了,所以我们可以通过 if...else... 语句来表示

if ( 表达式 )
    语句1
else
    语句2

输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数

#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if(num % 2 == 1)
    printf("%d 是奇数\n", num);
    else
    printf("%d 是偶数\n", num);
    return 0;
}
3)分支中包含多条语句

因为if 语句只能控制一条语句,通过使用 { } 将代码括起来,同样else 后也可以跟上大括号

4)if嵌套

在if else 语句中, else 可以与另一个if 语句连用,构成多重判断。
比如:要求输入一个整数,判断输入的整数是0,还是正数或者负数

#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if(num == 0)
    printf("输入的数字是0\n");
    else if(num > 0) //这里的 if 相当于嵌套在els语句中,形成了嵌套结构
    printf("输入的数字是正数\n");
    else
    printf("输入的数字是负数\n");
    return 0;
}

5)else的悬空问题

如果有多个if 和else ,可以记住这样一条规则, else 总是跟最接近的if 匹配

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
        printf("hehe\n");
        else
        printf("haha\n");//打印为空   第一个if为假 而if...else嵌套在第一个if中
    return 0;
}

2.关系操作符

比较的表达式称为 “关系表达式”(relational expression),里面使用的运算符就称为“关系运算符”(relational operator)

•  > 大于运算符

•  < 小于运算符
•  >= 大于等于运算符
•  <= 小于等于运算符
•  == 相等运算符(相等运算符== 与赋值运算符= 是两个不一样)
•  != 不相等运算符

关系表达式通常返回0 或1 ,表示真假。

容易错误的是:多个关系运算符不宜连用

i < j < k//关系运算符是从左到右计算,所以实际执行的是下面的表达式
         //(i < j) < k
         //i < j 返回 0 或1 ,所以最终是 0 或 1 与变量k 进行比较。如果想要判断变量j的值是否在 i 
         //和 k 之间,应该使用下面的写法:i < j && j < k

3.条件操作符

条件操作符也叫三目操作符,需要接受三个操作数

exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    b = a>5 ? 3:-3;
    printf("%d\n", b);
    return 0;
}
4.逻辑操作符:&&  ||  !

• ! :逻辑取反运算符(改变单个表达式的真假)

• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
• || :或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)

1) 逻辑取反运算符 !

 

#include <stdio.h>
int main()
{
    int flag = 0;
    if(!flag)//如果flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真
    {
    printf("do something\n");
    }
    return 0;
}
2 与运算符

 

#include <stdio.h>
int main()
{
    int month = 0;
    scanf("%d", &month);
    if(month >= 3 && month <= 5)//是month既要大于等于3,又要小于等于5
    {
    printf("春季\n");
    }
    return 0;
}    
3) 或运算符

#include <stdio.h>
int main()
{
    int month = 0;
    scanf("%d", &month);
    if(month == 12 || month==1 || month == 2)//月份是12月或者1月或者2月是冬天
    {
    printf("冬季\n");
    }
    return 0;
}    
4) 闰年的判断

输入一个年份year,判断year是否是闰年

1. 能被4整除并且不能被100整除是闰年
2. 能被400整除是闰年

#include <stdio.h>
//代码1
int main()
{
    int year = 0;
    scanf("%d", &year);
    if(year%4==0 && year%100!=0)
    printf("是闰年\n");
    else if(year%400==0)
    printf("是闰年\n");
    return 0;
}
#include <stdio.h>
//代码2
int main()
{
    int year = 0;
    scanf("%d", &year);
    if((year%4==0 && year%100!=0) || (year%400==0))
    printf("是闰年\n");
    return 0;
}
5) 短路

在C语言逻辑运算符中,总是先对左侧的表达式求值,再对右边的表达式求值,如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路

if(month 1 >= 3 && month <= 5)// && 的左操作数是 month >= 3 ,右操作数是month <= 5 
//当左操作数month >= 3 的结果是 0 的时候,即使不判断month <= 5 ,整个表达式的结果也是0(不是春季)

所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行

if(month == 12 || month==1 || month == 2)//如果month == 12则不用再判断month是否等于1或者2,
//整个表达式的结果也是1(是冬季) 所以, || 操作符的左操作数的结果不为0时,就无需执行右操作数

谢谢观看

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

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

相关文章

如何使用 SwiftUI 构建 visionOS 应用

文章目录 前言WindowsVolumes沉浸式空间结论 前言 Apple Vision Pro 即将推出&#xff0c;现在是看看 SwiftUI API 的完美时机&#xff0c;这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示&#xff0c;构建应用程序的最佳方式是使用 Swift 和 SwiftUI。…

鸿蒙本地签名不匹配问题

连接鸿蒙手机运行项目报如下错误 这是由于本地签名和鸿蒙设备签名不匹配导致的&#xff0c;需要注释掉如下代码&#xff0c;选择file project 自动签名 勾选auto选项&#xff0c;会在build-profile.json5中生成一个签名&#xff0c;然后运行就ok了~

NXP i.MX8系列平台开发讲解 - 3.18 Linux tty子系统介绍(一)

专栏文章目录传送门&#xff1a;返回专栏目录 Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 1. TTY 起源 2. Linux 系统中的TTY 2.1 Linux TTY 设备形式 2.2 Linux TTY framework 2.3 驱动核心相关文件…

「植物大战僵尸杂交版」保姆级攻略大全以及下载指南

植物大战僵尸杂交版自推出以来&#xff0c;以其独特的植物组合和策略玩法&#xff0c;迅速赢得了玩家们的喜爱。如果你正准备加入这场植物与僵尸的战斗&#xff0c;或者已经在战斗中寻求突破&#xff0c;那么这份保姆级的攻略大全将是你的得力助手。同时&#xff0c;我们也提供…

PLL和CDR的内部结构及其区别

比较PLL和CDR的内部结构及其区别&#xff1a; 基本结构&#xff1a; PLL&#xff08;相位锁定环&#xff09;&#xff1a; 相位检测器环路滤波器压控振荡器&#xff08;VCO&#xff09;分频器&#xff08;可选&#xff0c;用于频率合成&#xff09; CDR&#xff08;时钟数据恢复…

complex复数库学习

此头文件是数值库的一部分。本篇介绍complex的基本用法。 常用的API如下&#xff1a; 运算 real 返回实部 (函数模板) imag 返回虚部 (函数模板) abs(std::complex) 返回复数的模 (函数模板) arg 返回辐角 (函数模板) norm 返回模(范数)的平方 (函数模板) conj 返回复共轭 (函…

GuLi商城-商品服务-API-品牌管理-效果优化与快速显示开关

<template><div class"mod-config"><el-form :inline"true" :model"dataForm" keyup.enter.native"getDataList()"><el-form-item><el-input v-model"dataForm.key" placeholder"参数名&qu…

首个“可控”人物视频生成大模型--商汤Vimi:一张照片生成一分钟视频

商汤科技又整大活了&#xff0c;只需一张照片就能生成一分钟视频&#xff01; 7月4日&#xff0c;商汤发布了业内首个面向C端用户的、“可控”人物视频生成大模型产品Vimi&#xff0c;毫不夸张的说&#xff0c;视频制作者的福音来了&#xff01; Vimi有什么特别之处&#xff1…

Python爬虫零基础实战,简洁实用!

1.爬虫简介 简单来讲&#xff0c;爬虫就是一个探测机器&#xff0c;它的基本操作就是模拟人的行为去各个网站溜达&#xff0c;点点按钮&#xff0c;查查数据&#xff0c;或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。 你可以简单地想象&#xff1a;每个…

Ubuntu 22.04 安装中文字体

笔者在用OpenCV4.9处理图片加水印时&#xff0c;中文乱码。原来是Ubuntu 22.04发行版缺少中文字体支持&#xff0c;因此&#xff0c;笔者就找资料安装了需要的中文字体&#xff0c;特此记录&#xff0c;以备后查。 1、打开终端&#xff1a; 2、更新软件包列表&#xff1a; su…

哏号分治,CF103D - Time to Raid Cowavans

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 103D - Time to Raid Cowavans 二、解题报告 1、思路分析 想了半天数据结构最终选择根号分治 我们考虑 大于 550 的公差直接暴力 小于550 的公差的所有询问&#xff0c;我们直接计算该公差后缀和&#xf…

【Linux进阶】磁盘分区3——目录树,挂载

Linux安装模式下&#xff0c;磁盘分区的选择&#xff08;极重要&#xff09; 在Windows 系统重新安装之前&#xff0c;你可能会事先考虑&#xff0c;到底系统盘C盘要有多大容量&#xff1f;而数据盘D盘又要给多大容量等&#xff0c;然后实际安装的时候&#xff0c;你会发现其实…

Rocky Linux 9.4基于官方源码制作openssh 9.8p1二进制rpm包 —— 筑梦之路

2024年7月1日&#xff0c;openssh 9.8版本发布&#xff0c;主要修复了CVE-2024-6387安全漏洞。 由于centos 7的生命周期在6月30日终止&#xff0c;因此需要逐步替换到Rocky Linux&#xff0c;后续会有更多分享关于Rocky Linux的文章。 环境说明 1. 操作系统版本 cat /etc/o…

【Odoo开源ERP】别把ERP与进销存软件混为一谈

导读&#xff1a;企业使用ERP软件能够实现管理升级&#xff0c;多方信息集成&#xff0c;按照既定策略逻辑运算&#xff0c;生成计划建议&#xff0c;减少人力成本&#xff0c;提高准确率的同时提高经营能力。 ERP&#xff0c;是MRP II的下一代软件&#xff0c;除了MRP II已有的…

(0)2024年基于财务的数据科学项目Python编程基础(Jupyter Notebooks)

目录 前言学习目标&#xff1a;学习内容&#xff1a;大纲 前言 随着数据科学的迅猛发展&#xff0c;其在财务领域的应用也日益广泛。财务数据的分析和预测对于企业的决策过程至关重要。 本专栏旨在通过Jupyter Notebooks这一强大的交互式计算工具&#xff0c;介绍基于财务的数…

Uniapp 默认demo安装到手机里启动只能看得到底tab无法看到加载内容解决方案

Uniapp 默认demo安装到手机里以后&#xff0c;启动APP只能看到底tab栏&#xff0c;无法看到每个tab页对应的内容&#xff0c;HBuilder会有一些这样的报错信息&#xff1a; Waiting to navigate to: /pages/tabBar/API/API, do not operate continuously: 解决方案&#xff1a;…

在Linux操作系统中关于逻辑卷的案例

1.如何去创建一个逻辑卷 1.1先去创建物理卷 如上图所示&#xff0c;physical volume 物理卷 被成功创建。 如上图所示&#xff0c;可以使用pvscan来去查看当前Linux操作系统的物理卷/ 1.2使用创建好的物理卷去创建一个卷组。 如上图所示&#xff0c;可以使用第一步创建的两个…

windows电脑网络重置后wifi列表消失怎么办?

我们的电脑网络偶尔会出现异常&#xff0c;我们通常会下意识选择网络诊断&#xff0c;运行完诊断后一般会让我们选择重置网络&#xff0c;然而&#xff0c;重置后wifi列表突然消失&#xff0c;无法愉快地上网了&#xff0c;找了一圈&#xff0c;都说是更改适配器选项&#xff0…

CV02_超强数据集:MSCOCO数据集的简单介绍

1.1 简介 MSCOCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是由微软公司在2014年推出并维护的一个大规模的图像数据集&#xff0c;旨在推动计算机视觉领域的研究&#xff0c;尤其是目标识别、目标检测、实例分割、图像描述生成等任务。该数据集…