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,一经查实,立即删除!

相关文章

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

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

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

题目 代码 #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…

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…

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 遍历键…

STM32系统架构介绍

STM32系统架构 1. CM3/4系统架构2. CM3/4系统架构-----存储器组织结构2.1 寄存器地址映射&#xff08;特殊的存储器&#xff09;2.2 寄存器地址计算2.3 寄存器的封装 3. CM3/4系统架构-----时钟系统 STM32 和 ARM 以及 ARM7是什么关系? ARM 是一个做芯片标准的公司&#xff0c…

鸿蒙NEXT开发-发布三方库

开发一个三方库 如需发布一个 har 包&#xff0c;必须包含 oh-package.json5、README.md&#xff0c;CHANGELOG.md 和 LICENSE 四个文件&#xff0c;若文件缺失&#xff0c;会导致上架至中心仓失败。 HAR&#xff08;Harmony Archive&#xff09;是静态共享包&#xff0c;可以…

CSS 实现下拉菜单效果实例解析

1. 引言 在 Web 开发过程中&#xff0c;下拉菜单是一种常见且十分实用的交互组件。很多前端教程都提供过简单的下拉菜单示例&#xff0c;本文将以一个简洁的实例为出发点&#xff0c;从 HTML 结构、CSS 样式以及整体交互逻辑三个层面进行详细解析&#xff0c;帮助大家理解纯 C…

半导体制造工艺讲解

目录 一、半导体制造工艺的概述 二、单晶硅片的制造 1.单晶硅的制造 2.晶棒的切割、研磨 3.晶棒的切片、倒角和打磨 4.晶圆的检测和清洗 三、晶圆制造 1.氧化与涂胶 2.光刻与显影 3.刻蚀与脱胶 4.掺杂与退火 5.薄膜沉积、金属化和晶圆减薄 6.MOSFET在晶圆表面的形…

微信小程序如何使用decimal计算金额

第三方库地址&#xff1a;GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript 之前都是api接口走后端计算&#xff0c;偶尔发现这个库也不错&#xff0c;计算简单&#xff0c;目前发现比较准确 上代码 导入js import Decimal from ../../uti…

安卓开发,底部导航栏

1、创建导航栏图标 使用系统自带的矢量图库文件&#xff0c;鼠标右键点击res->New->Vector Asset 修改 Name , Clip art 和 Color 再创建一个 同样的方法再创建四个按钮 2、添加百分比布局依赖 app\build.gradle.kts 中添加百分比布局依赖&#xff0c;并点击Sync Now …

前后端服务配置

1、安装虚拟机&#xff08;VirtualBox或者vmware&#xff09;&#xff0c;在虚拟机上配置centos(选择你需要的Linux版本)&#xff0c;配置如nginx服务器等 1.1 VMware 下载路径Sign In注册下载 1.2 VirtualBox 下载路径https://www.virtualbox.org/wiki/Downloads 2、配置服…

亲身经历!!解决fatal: unable to access ‘https://~.git/‘: Failed to connect to github.com ····

最近学着用GitBash,发现上来gitclone 就报错。由于我是纯小白&#xff0c;所以试了比较多次&#xff0c;终于成功了。 首先我试了一下关闭梯子&#xff0c;发现还是不行。上网搜&#xff0c;说是代理问题&#xff0c;可我也不知道啥叫代理&#xff0c;反正大概意思就是电脑连通…