C语言基础11:分支结构以及if的使用

C语言基础

内容提要

  • 分支结构
    • 条件判断
    • 用if语句实现分支结构

分支结构

问题抛出

我们在程序设计往往会遇到如下问题,比如下面的函数的计算:

y = { 1 / x 当 x ≠ 0 时 10000 当 x = 0 时 y = \begin{cases} 1/x \quad当x\neq0时\\ \\ 10000 \quad当x=0时 \end{cases} y= 1/xx=010000x=0

也就是我们必须要通过一个条件的结果来选择下一步的操作,算法上属于一个分支结构,C语言中实现分支结构主要使用if语句。

条件判断

根据某个条件成立与否,决定是否执行指定的任务(操作)。

在这里插入图片描述

条件判断的结果是逻辑值(布尔类型值,也就是说分支语句的条件可以使用关系表达式和逻辑表达式),在程序中用真(1)和假(0)来表示。

关系运算及其表达式
关系运算符及其优先级次序

关系运算符是用来进行比较的符号,C语言中提供了6种关系运算符:

在这里插入图片描述

关系表达式

关系表达式是指用关系运算符将两个表达式连接起来组成的有意义的式子。

在这里插入图片描述

在C语言中,用1(非0)表示关系表达式的值为真(条件成立),0表示关系表达式的值为假(条件不成立),即关系表达式的值要么为1(条件成立,)要么为0(条件不成立)

问题抛出

有时,只用一个简单的关系表达式无法完整的表达一个条件:

y = { 1 / x + 1 / a 当 x ≠ 0 , a ≠ 0 时 10000 其他 y = \begin{cases} 1/x+1/a \quad当x\neq0,a\neq0时\\ \\ 10000 \quad其他 \end{cases} y= 1/x+1/ax=0,a=010000其他

其中的条件需要用逻辑表达式来表示:x!=0 && a!=0,&&就是一种逻辑运算符。

逻辑运算及其表达式
逻辑运算符及其优先级
  • 逻辑运算符是构成复杂的复合条件的运算符。

C语言中提供了三种逻辑运算符:

符号名称分类说明
&&逻辑与双目运算符两个量都为真时为真(1),否则为假(0)
||逻辑或双目运算符两个量中只要有一个为真即为真(1),只有两个量都为假时才为假(0)
!逻辑非单目运算符运算量真时变为假(0),假时变为真(1)
逻辑表达式
ab!a!ba&&ba||b
非0非000非0非0
非000非00非0
0非0非000非0
00非0非000

用逻辑运算符将关系表达式或逻辑表达式连接起来的构成有意义的式子。

在这里插入图片描述

逻辑表达式中各种运算符的优先级顺序如下:

!(逻辑非)→算术运算符(±*/%)→关系运算符(>、<、>=、<=、==、!=)→&&和||→赋值运算符(=、+=…)

C语言编译系统在表示逻辑运算符结果时:用1表示真,用0表示假。

案例:

假设a = 4,b = 5,则:

!a           --0
a && b       --1
a || b       --1
!a || b      --1
4 && 0 || 2  --1    

小贴士:

实际上,逻辑运算符两侧的运算对象不但可以时0和1,或者时0和非0,而且也可以是字符型、实型和指针型等。系统最终是以0和非0来判定他们的真假的,例如:

‘c’ && 'd’结果为1

用if语句实现分支结构

单分支:if …
  • 语法:

    //语法1:可以舍弃{}
    if(条件表达式)单语句;//语法2:必须保留{}
    if(条件表达式)
    {单语句或者复合语句;
    }
    
  • 流程图

    在这里插入图片描述

  • 功能

    • 若表达式值为真(非0),则执行表达式后面的语句,执行完该语句后继续执行if语句后的代码。
    • 若表达式值为假(0)则不执行表达式后面的语句而直接执行if语句后面的语句。
  • 说明:

    • 如果表达式后面的是复合语句,则要用一对花括号{}括起来,单语句可有可无。
  • 案例:

    • 要求:计算并输出下列分段函数的值:

      y = { − 2 x < 0 2 x ≥ 0 y = \begin{cases} -2 \quad x<0\\ \\ 2 \quad\quad x\geq0 \end{cases} y= 2x<02x0

    • 流程图:

      在这里插入图片描述

    • 代码:

      /*************************************************************************> File Name:    demo01.c> Author:       zk> Description: 单分支案例 > Created Time: 2025年02月11日 星期二 10时42分43秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
      {//创建两个变量,用来存储两个操作数double x,y = -2;//从控制台输入xprintf("请输入一个数,作为x的值:\n");scanf("%lf",&x);//校验if(x >= 0) 	 y = 2;printf("x=%lf,y=%lf2\n",x,y);return 0;
      }
    • 运行结果:

      在这里插入图片描述

  • 案例:

    • 需求:有a,b,c三个数,要求从控制台输入,并且求出最大值

    • 分析:

      1.通过控制台输入a,b,c的值

      2.创建一个变量max,用来存放a,b,c中的最大值,默认a是最大值(这样可以减少一次判断)

      3.让b,c和max进行比较,将最大值存入max

    • 代码:

      /*************************************************************************> File Name:    demo02.c> Author:       zk> Description: 单分支案例:有a,b,c三个数,要求从控制台输入,并且求出最大值 > Created Time: 2025年02月11日 星期二 10时58分41秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
      {//创建4个变量啊a,b,c,maxint a,b,c,max;//通过键盘输入数据给a,b,cprintf("请输入三个整数:\n");scanf("%d%d%d",&a,&b,&c);//默认a是最大值max = a;//让最大值分别和b和c比较if(max < b)  max = b;if(max < c)  max = c;//a,b中的最大值和c进行比较,得到最大值printf("输入的三个数是%d %d %d,其中最大值是%d\n",a,b,c,max);return 0;
      }
    • 运行结果:

      在这里插入图片描述

      有可能产生的问题:

      ①scanf()同时输入多个变量时,默认使用空格、Tab键、回车键进行区分。

      ②在变量赋值前使用变量,导致运算结果错误(变量未赋值前,系统会给变量分配随机值)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用navicat 17 实现两个不同数据库oracle和sqlserver2008之间多个表数据的自动同步

要实现两个不同数据库&#xff08;Oracle 和 SQL Server 2008&#xff09;之间多个表数据的自动同步&#xff0c;可以利用 Navicat 17 的“数据传输”功能&#xff08;Data Transfer&#xff09;和“任务调度”功能&#xff08;Task Scheduler&#xff09;。下面是一个概括的步…

81页精品PPT | 华为流程与信息化实践与架构规划分享

华为流程与信息化实践与架构规划分享主要围绕华为在业务流程与信息化建设方面的经验、企业架构规划方法以及企业数字化转型路径展开。华为通过持续的业务变革和信息化建设&#xff0c;从本土企业逐步发展为国际化、全球化企业&#xff0c;其管理体系以持续创新和世界级管理体系…

智能客服API接口:提升电商平台用户体验的新途径

在数字化时代&#xff0c;电商平台已成为人们购物的主要渠道之一。随着用户需求的日益多样化和个性化&#xff0c;电商平台面临着前所未有的挑战&#xff0c;即如何在激烈的市场竞争中脱颖而出&#xff0c;提供卓越的用户体验。智能客服API接口作为连接电商平台与智能客服系统的…

【最大开支——优先队列,计算增量】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; using pll pair<ll, int>; #define x first #define y second const int N 1e5 10; int n, m; int k[N], b[N], cnt[N]; priority_queue<pll, vector<pll>> pq; // d…

174款复古Y2K酸性镀铬银色金属多样化锁链链条铁链几何抽象PNG免扣元素设计套装 Studio 2AM - Chains

Chains 是以链条纹理为主题的设计元素的集合。以 PNG 格式以高分辨率创建&#xff0c;但文件大小较小&#xff0c;因此不会占用硬盘空间。“Chains” 是以 PNG 格式提供的以链条为主题的设计元素的高分辨率集合。该套装包括 174 个银色、生锈和彩虹色材料的链条纹理&#xff0c…

将 AMD Zynq™ RFSoC 扩展到毫米波领域

目录 将 AMD Zynq™ RFSoC 扩展到毫米波领域Avnet XRF RFSoC 系统级模块适用于 MATLAB 的 Avnet RFSoC Explorer 工具箱5G mmWave PAAM 开发平台突破性的宽带毫米波波束成形特征&#xff1a;OTBF103 Mathworks Simulink 模型优化毫米波应用中的射频信号路径 用于宽带毫米波上/下…

IDEA中打包maven项目,提示Compilation failure

使用IDEA打包maven项目&#xff0c;报错如下&#xff1a; 解决方法&#xff1a;在pom文件中指定JDK版本即可 <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target> </propertie…

游戏本电脑为什么打开游戏开始玩不卡,过段时间玩却非常卡(比如黑神话悟空)

问题&#xff1a; 游戏本电脑为什么打开游戏开始玩不卡&#xff0c;过段时间玩却非常卡 解决方法&#xff1a; 1.模式设置的问题&#xff1a;可能是电脑的游戏模式没打开&#xff0c;比如一般电脑都有办公模式&#xff0c;均衡模式和狂暴模式&#xff08;亲测用办公模式玩大…

【C#】条件运算符

1.逻辑与(&&) Console.WriteLine(true && true);//true Console.WriteLine(true && false);//false Console.WriteLine(false && false);//false2.逻辑或(||) Console.WriteLine(true || true);//true Console.WriteLine(true || false);//t…

自动化办公|xlwings快速入门

1. 创建和打开 Excel 工作簿 使用 xlwings.Book 创建新的 Excel 工作簿或打开已有的 Excel 文件。 创建新工作簿 import xlwings as xw# 创建一个新的 Excel 工作簿 wb xw.Book()# 获取当前活动的工作表 sheet wb.sheets.active sheet.range("A1").value "…

【CXX-Qt】1 CXX-Qt入门

与其他Qt-Rust绑定相比&#xff0c;CXX-Qt的目标不仅仅是将Qt功能暴露给Rust&#xff0c;而是完全将Rust集成到Qt生态系统中。我们将通过一个最小示例&#xff0c;展示如何使用CXX-Qt在Rust中创建自己的QObject&#xff0c;并将其与基于QML的小型GUI集成。 一、阅读前准备知识…

Idea集成deepseek生成代码

今天我带大家在idea上安装CodeGpt插件&#xff0c;这个插件可以根据我们的提示词生产代码&#xff0c;我们一起试试。 1、安装插件 打开idea&#xff0c;再点击setting菜单&#xff0c;按以下步骤操作。 安装完成后&#xff0c;一定要点击第四步“ok”。再次点击菜单setting…

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…

Ubuntu安装PgSQL17

参考官网教程&#xff0c;Ubuntu24 apt在线安装Postgres 17 1. 要手动配置 Apt 存储库 # 导入存储库签名密钥&#xff1a; sudo apt install curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg sudo curl -o /usr/share/postgresql-common/pgdg/apt…

【iOS自动化】Xcode配置WebDriverAgent

WebDriverAgent 是 iOS 端自动化测试的工具&#xff0c;这里记录下 MacOS 环境 Xcode 如何配置 WebDriverAgent。 【重要】环境准备 ‼️ 注意&#xff1a;Xcode 版本需要支持对应的 iOS 版本&#xff0c;而 Xcode 版本又依赖 MacOS 版本&#xff1b;在开始部署前&#xff0c…

【逆向工程】破解unity的安卓apk包

先了解一下普通apk包的逆向方法&#xff08;无加密或加壳&#xff09; 开发环境&#xff1a; 操作系统&#xff1a;windows 解apk包 下载工具&#xff1a;apktool【Install Guide | Apktool】按照文档说的操作就行&#xff0c;先安装java运行时环境【我安装的是jre-8u441-wind…

蓝桥杯试题:冒泡排序 选择排序

一、问题描述 在一个神秘的岛屿上&#xff0c;有一支探险队发现了一批宝藏&#xff0c;这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字&#xff0c;代表了其珍贵程度。然而&#xff0c;由于某种神奇的力量&#xff0c;这批宝藏的顺序被打乱了&#xff0c;探险队…

Golang:精通sync/atomic 包的Atomic 操作

在本指南中&#xff0c;我们将探索sync/atomic包的细节&#xff0c;展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步&#xff0c;你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧&#xff01; 理解Go中的原子操作 在快…

Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)

背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…

【Python】字典

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;Python 文章目录 1. 字典概述2. 字典的创建与初始化2.1 直接使用花括号创建2.2 使用 dict() 构造函数创建2.3 字典推导式创建 3. 字典的基本操作3.1 访问字典中的值3.2 修改和添加键值对3.3 删除键值对 4. 字典的遍历4.1 遍历键…