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.rhkb.cn/news/16158.html

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

相关文章

【Elasticsearch】监控与管理:集群监控指标

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案

企业的应用场景 数据清洗&#xff1a;在进行数据导入或分析之前&#xff0c;往往需要对大量文本数据进行预处理&#xff0c;比如去除文本中的无关字符&#xff08;中文、英文&#xff09;&#xff0c;只保留需要的联系信息&#xff08;手机号码、固话号码、邮箱&#xff09;。…

Vue项目--动画效果的改变

前言&#xff1a; 本篇文章主要是用于解决Vue2改Vue3项目过程中遇到的动画问题 vue2中动画效果 1. 作用&#xff1a;在插入、更新或移除 DOM元素时&#xff0c;在合适的时候给元素添加样式类名。 2. 写法&#xff1a; 1. 准备好样式&#xff1a; - 元素进入的样式&…

01.Docker 概述

Docker 概述 1. Docker 的主要目标2. 使用Docker 容器化封装应用程序的意义3. 容器和虚拟机技术比较4. 容器和虚拟机表现比较5. Docker 的组成6. Namespace7. Control groups8. 容器管理工具9. docker 的优缺点10. 容器的相关技术 docker 官网: http://www.docker.com 帮助文档…

【转载】开源鸿蒙OpenHarmony社区运营报告(2025年1月)

●截至2025年1月31日&#xff0c;开放原子开源鸿蒙&#xff08;OpenAtom OpenHarmony&#xff0c;简称“开源鸿蒙”或“OpenHarmony”&#xff09;社区累计超过8200名贡献者&#xff0c;共63家成员单位&#xff0c;产生51.2万多个PR、2.9万多个Star、10.5万多个Fork、68个SIG。…

STM32系统架构介绍

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

Leetcode - 149双周赛

目录 一、3438. 找到字符串中合法的相邻数字二、3439. 重新安排会议得到最多空余时间 I三、3440. 重新安排会议得到最多空余时间 II四、3441. 变成好标题的最少代价 一、3438. 找到字符串中合法的相邻数字 题目链接 本题有两个条件&#xff1a; 相邻数字互不相同两个数字的的…

2025.2.10 每日学习记录3:技术报告只差相关工作+补实验

0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右&#xff0c;一次性备考笔试的三个科目 1.实习申请技术准备&#xff1a;微调、Agent、RAG 据央视财经&#xff0c;数据显示&#xff0c;截至2024年12月…

【苍穹外卖】修改前端代码解决修改Nginx端口后websocket连接失败的问题

解决方案——修改前端js代码 步骤一 找到文件app.d0aa4eb3.js&#xff08;…\nginx-1.20.2\html\sky\js\app.d0aa4eb3.js&#xff09;&#xff0c;将n"ws://localhost/ws/"改成下面的内容。 // 改成n"ws://localhost&#xff1a;800/ws/"仍然不行——页面…

本地基于GGUF部署的DeepSeek实现轻量级调优之二:检索增强生成(RAG)

前文&#xff0c;我们在本地windows电脑基于GGUF文件&#xff0c;部署了DeepSeek R1 1.5B模型&#xff0c;如果想在离线模式下加载本地的DeepSeek模型自行对进行训练时&#xff0c;是不能直接使用GGUF文件进行训练的&#xff0c;但是可以对模型进行微调&#xff0c;以下说的是第…

开发完的小程序如何分包

好几次了&#xff0c;终于想起来写个笔记记一下 我最开始并不会给小程序分包&#xff0c;然后我就各种搜&#xff0c;发现讲的基本上都是开发之前的小程序分包&#xff0c;可是我都开发完要发布了&#xff0c;提示我说主包太大需要分包&#xff0c;所以我就不会了。。。 好了…

Java进阶篇之多线程

引言 &#x1f680; 在前面的文章中&#xff0c;我们介绍了NIO&#xff08;Java进阶篇之NIO基础&#xff09;。你是不是曾经在面对需要处理大量任务的应用时&#xff0c;感觉单线程根本不够用&#xff1f;&#x1f613; 如果你想让你的应用运行得更快、更高效&#xff0c;多线…

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题&#xff1a;在默认的Visual Studio中&#xff0c;选择单行代码后&#xff0c;按下Ctrl /键会将代码注释掉&#xff0c;但再次按下Ctrl /键时&#xff0c;会进行双重注释&#xff0c;这不是我们想要的。 实现效果&#xff1a;当按下Ctrl /键会将代码注释掉&#xff0c;…

DeepSeek投喂数据(训练AI)

1、拉取nomic-embed-text 打开命令行&#xff0c;运行&#xff1a;ollama pull nomic-embed-text 这里需要先安装ollama &#xff0c;不过大家应该在本地部署模型时已经安装了 拉取成功就行了&#xff0c;后续在配置AnythingLLM时用到 2、下载 AnythingLLM 地址&#xff1a…

【原创精品】基于Springboot3+Vue3的学习计划管理系统

大家好&#xff0c;我是武哥&#xff0c;最近给大家手撸了一个基于SpringBoot3Vue3的学习计划管理系统&#xff0c;可用于毕业设计、课程设计、练手学习&#xff0c;系统全部原创&#xff0c;如有遇到网上抄袭站长的&#xff0c;欢迎联系博主~ 项目演示视频 https://www.bili…

逆势而上,门店规模拓展的智慧攻略-中小企实战运营和营销工作室博客

逆势而上&#xff0c;门店规模拓展的智慧攻略-中小企实战运营和营销工作室博客 在竞争激烈、风云变幻的商业市场中&#xff0c;多数品牌在困境中艰难求生&#xff0c;而部分佼佼者却能突破重重阻碍&#xff0c;实现门店规模的逆势扩张。这些成功案例背后&#xff0c;究竟隐藏着…

基于改进型灰狼优化算法(GWO)的无人机路径规划

内容&#xff1a; 基于改进型灰狼优化算法的无人机轨迹规划 GWO是一种群体智能优化算法&#xff0c;模仿灰狼的社会等级和狩猎行为。原始的GWO有一些局限性&#xff0c;比如容易陷入局部最优&#xff0c;收敛速度慢等&#xff0c;所以改进型的GWO可能通过不同的策略来优化这些…

网络安全与AI:数字经济发展双引擎

在2025年年初&#xff0c;一场科技攻防战引发了全球关注。国产人工智能DeepSeek的爆火&#xff0c;伴随着大规模的网络攻击事件&#xff0c;将网络安全的重要性推上了风口浪尖。 在此背景下&#xff0c;我们计划探讨网络安全与人工智能如何为数字经济发展提供强大动力。网络安…

2.11学习记录

web——CTFHub XSS学习 学习资料&#xff1a;xss&#xff08;跨站攻击&#xff09; 原理 1.黑客发送带有xss恶意脚本的链接给用户 2.用户点击了恶意链接&#xff0c;访问了目标服务器&#xff08;正常的服务器&#xff09; 3.目标服务器&#xff08;正常的服务器&#xff09…

个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)

在行业混了短短几年&#xff0c;却总感觉越混越迷茫&#xff0c;趁着还有心情学习&#xff0c;把当初API9 的毕业设计项目改成API13的项目。先占个坑&#xff0c;把当初毕业设计的文案搬过来 摘要&#xff1a;HarmonyOS&#xff08;鸿蒙系统&#xff09;是华为公司推出的面向全…