C语言程序设计-[6] if语句分支结构

news2024/11/25 2:51:36

if语句分支结构有三种形式,分别按照语句形式、流程图表示、示例的步骤进行讲解。

1、if语句的一般形式

——简单if语句

语句形式:if(表达式)  语句1;

执行过程:

   如果表达式值为“真”,执行该语句1,然后执行if的下一个语句;

否则直接执行if的下一个语句。

注1:表达式可以是任意的,只要有值就行,并遵循非0即真。

#include "stdio.h"

int main()
{
	int i=5,j=0,k=-5;
	char c='A';
	if(i) printf("i\n");
	if(j) printf("j\n");
	if(k) printf("k\n");
	if(c) printf("c\n");
	if(i+j+k<c) printf("i+j+k<c");
	return 0;
}

从上面看,只有表达式的值为0或者逻辑值为假时,才不执行if后面的语句。

注2:=和==的区别,前者是赋值,后者关系恒等。前者赋值后遵循非0即真,后者恒等即真。

#include "stdio.h"

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

i的值为5,所以第一个if表达式为真。由于i的值为5,所以5==5为真。因此,两个都输出。

#include "stdio.h"

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

i的值在执行第一个if表达式后变为-5,非0即真,所以-5仍然为真。由于i变为-5了,所以-5==5为假。因此,只输出第一个。

注3:3<x<100的含义与数学上含义不同。

#include "stdio.h"

int main()
{
	int x=5;
	if(3<x<100) printf("3<x<100");
	return 0;
}

除单目、三目和赋值运算符是从右至左运算,其他是从左至右运算,所以3<x<100是先运算3<x即3<5为真(也就是1),然后运算1<100为真。因此该表达式的值为真,从而输出,并不是数学上的3<x<100的区间意思。如果需要表示数学上区间意思就要使用3<x and x<100。

#include "stdio.h"

int main()
{
	int x=5;
	if(3<x && x<100) printf("3<x 并且 x<100");
	return 0;
}

——if-else形式

语句形式:

       if (表达式) 语句1;

       else 语句2;

执行流程:

      如果表达式值非0,执行语句1;

      否则,执行语句2;

      无论执行了哪一路分支之后,

      都执行if的下一条语句;

#include "stdio.h"

int main()
{
	int x=5;
	if(3<x) printf("3<x");
	else printf("x<=3");
	return 0;
}

#include "stdio.h"

int main()
{
	int x=2;
	if(3<x) printf("3<x");
	else printf("x<=3");
	return 0;
}

注:根据表达式的逻辑值来判定,若为真,则执行if(表达式)后的语句,否则执行else后的语句。

——if-else-if 形式

注:这个其实就是if-else形式的逐步嵌套,从流程图就可以看出,实现多路分支结构,与后面的switch结构可以互相转换。

#include "stdio.h"

int main()
{
	int score;
	scanf("%d",&score);
	if(score>=90) printf("A");
	else if(score>=80) printf("B");
	else if(score>=70) printf("C");
	else if(score>=60) printf("D");
	else printf("E");
	return 0;
}

2. if 语句的嵌套

if语句可以进行嵌套,即if语句的执行语句又是一条if语句。if语句有三种形式,if语句的嵌套根据两两组合,有很多形式。if嵌套的时候,需要注意else与if的匹配问题,else总是与它上面最近的if匹配成对

注:如果不想嵌套出现匹配出错问题,最好的办法就是加上{},将多条语句括起来构成复合语句。

条件运算符是C语言中唯一的三目运算符,使用方法也相对固定,与if-else形式等同,可以简化代码。

思考: a<b?c:d<e?f:g 的计算顺序

——三目运算符,从右至左运算,所以a<b?c:d<e?f:g是先算a<b?(c:d<e?f:g)中的括号,然后算左边。

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

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

相关文章

【生成式人工智能-四-chatgpt的训练过程-pretrain预训练自督导式学习督导式学习】

大模型是怎么被训练出来的具有人类智慧的 阶段一训练-自我学习-具备知识训练资料self-supervised learning&#xff08;自督导式学习&#xff09; 阶段二-怎么让模型具备人的智慧supervised learning 督导式学习预训练pretrain为什么要用预训练的模型&#xff1f;Adapter逆向工…

【大专生学前端】:挑战与机遇并存——你怎么看?

在当今互联网飞速发展的时代&#xff0c;前端开发作为连接用户与产品的重要桥梁&#xff0c;一直备受关注。然而&#xff0c;近期社会上流传着一种说法&#xff1a;“大专生学前端&#xff0c;没有前途了&#xff0c;毕业即失业。”这一观点不仅引发了广泛的讨论&#xff0c;也…

【爬虫实战】利用代理爬取电商数据

文章目录 前言工具介绍实战获取网站数据编写代码数据展示 推荐总结 前言 当今电商平台正经历着快速的转型与升级。随着技术的进步和用户需求的多样化&#xff0c;电商不仅从简单的在线购物演变为综合性的购物生态系统&#xff0c;还融合了人工智能、大数据和云计算等先进技术。…

freeRTOS入门学习-基于STM32F103C8T6最小系统板-使用cubeMX创建一个新的工程

一、准备工作 首先打开我们的cubeMX软件&#xff0c;搜索我们对应的MCU&#xff0c;我这里使用的是c8t6最小系统板 接下来双击我们需要的芯片型号 二、System Core配置 进入界面后我们先进行时钟的配置 将HSE配置为晶振 然后我们将SYS配置成为serial wire&#xff0c; …

【单片机毕业设计选题24102】-基于STM32和阿里云的禽舍环境监测控制系统

系统功能: 系统分为主机端和从机端&#xff0c;主机端主动向从机端发送信息和命令&#xff0c;从机端 收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。 从机端操作&#xff1a; 从机端上电后显示“欢迎使用环境监测系统请稍后”两秒后显示第一页面。 从机端口上电…

每日学习笔记:C++ STL算法之数值算法

目录 算法头文件 运算后产生结果 对容器所有元素(数列)进行某种运算&#xff1a; accumulate(beg, end, initValue) accumulate(beg, end, initValue, op) 计算两数列的内积&#xff1a; inner_product(beg1, end1, end2, initValue) inner_product(beg1, end1, end2…

红酒与奶酪:欧洲风情的整合

在欧洲的浪漫风情中&#xff0c;红酒与奶酪总是携手相伴&#xff0c;它们各自不同的魅力交织在一起&#xff0c;仿佛一首悠扬的交响曲&#xff0c;在味蕾上奏响。当洒派红酒&#xff08;Bold & Generous&#xff09;与精选奶酪相遇&#xff0c;一场欧洲风情的整合即将上演。…

亚马逊自发货erp,自动虚拟发货自动生成订单

亚马逊自发货 ERP 自动化虚拟发货&#xff0c;贴牌定制独立部署。 大家好&#xff0c;今天来讲一下 ERP 的虚拟自动发货&#xff01; 1. 以为发货都是人工手动去发货的&#xff0c;其实不然&#xff0c;很多产品一爆就是几十、一百单&#xff0c;不可能一个一个点的去发货&am…

vue3 ResizeObserver如何监听一个容器盒子div宽度高度发生改变

ResizeObserver定义 ResizeObserver&#xff1a;是一个 JavaScript API&#xff0c;用于监视元素的大小变化。它可以观察一个或多个 DOM 元素&#xff0c;以便在元素的大小或形状发生变化时触发回调函数。 ResizeObserver &#xff1a;为了更有效地处理元素尺寸变化而引入的&am…

Linux驱动开发—设备树传递给内核,匹配驱动过程分析

文章目录 总体流程图传递DTB过程编译设备树源文件将 .dtb 文件与内核或引导加载程序集成 内核初始化阶段解析DTB内核启动阶段解析 DTB注册设备树节点驱动程序绑定 内核解析设备树二进制文件&#xff08;DTB&#xff09;的过程主要分为几个步骤&#xff0c;从设备树的传递到最终…

Mybatis学习-day19

Mybatis学习-day19 1. resultMap resultMap 是 MyBatis 中最复杂的元素&#xff0c;主要用于解决实体类属性名与数据库表中字段名不一致的情况&#xff0c;可以将查询结果映射成实体对象。 <resultMap id"staffAndDep" type"com.easy.bean.Staff">…

apache 漏洞

影响版本 Apache HTTP Server 2.4.49 某些Apache HTTPd 2.4.50也存在此漏洞 环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid 漏洞复现 http://1.15.136.212:8080 1.使⽤poc curl http://1.15.136.212:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd

在没有硬盘的情况下进行电脑数据迁移

电脑数据迁移方式 在更换电脑的时候需要进行文件的传输&#xff0c;但是没有硬盘可以选择使用网线直连或者无线文件共享。通用配置 1.将旧电脑的文件夹或者磁盘设置文件共享 找到指定的文件夹右键属》属性&#xff0c;点击共享》点击高级共享 选择共享文件夹以及修改共享用户…

缓冲区和文件IO--linux系统调用

缓冲区&#xff1a; 缓冲区是一块内存区域&#xff0c;用于存储数据&#xff0c;直到数据被真正写入到文件或设备中&#xff0c;或从文件或设备中读取。这种机制使得程序可以一次处理较大的数据块&#xff0c;而不是频繁地进行较小的I/O操作。 缓冲模式&#xff1a; 全缓冲&…

学习LLM大模型,不容错过的《大语言模型:基础与前沿》(附PDF下载)

前言 就目前来看&#xff0c;大量工作正逐渐被大型语言模型&#xff08;LLM&#xff09;所替代&#xff0c;就比如文本自动生成、智能客服、数据分析和预测等多个领域。这暗示着LLM正逐步成为支撑社会运作的关键基础设施。未来&#xff0c;比Devin更为智能的LLM将会问世。我们…

ARMxy 智能控制器:工业自动化的创新解决方案

工业自动化对控制器的要求也越来越高。ARMxy 智能控制器集成了 PLC 控制和 4G 边缘计算网关&#xff0c;具有多合一的功能&#xff0c;为工业自动化提供了创新的解决方案。 ARMxy 智能控制器的 PLC 控制功能使其能够实现对工业生产过程的精确控制。它可以接收各种传感器的信号…

mapbox-gl 实现绘制图形吸附功能

文章目录 一、前言二、实现代码 一、前言 mapbox-gl 为地图前端框架&#xff0c;以优美的地图样式著称。mapbox-gl-draw 插件可以实现绘制图形&#xff0c;编辑图形的功能&#xff0c;但是编辑图形时无法吸附点位&#xff0c;导致相邻面无法相接。使用mapbox-gl-draw-snap-mod…

JS+CSS案例:用CSS+JS做漂亮的拟真时钟

JSCSS案例&#xff1a;用CSSJS做漂亮的拟真时钟 今天给大家分享一个挺酷的CSSjs模拟的时钟。 案例效果图&#xff1a; 案例分析 通过CSS画一个表的外观&#xff0c;通过JS获取当前时间&#xff0c;并控制表针做对应角度的旋转。 制作时钟外观 HTML结构 首先&#xff0c;我…

python实现小游戏随机猜数

1、脚本练习 import random# 初始化剩余的猜测次数 counts 3 # 生成一个1到10之间的随机整数 numb random.randint(1, 10)# 循环直到猜测次数用完 while counts > 0:tmp input("请输入小鱼手里的数字 (你还剩下 {} 次机会): ".format(counts))guess int(tmp)…

精通剪辑艺术,2024年度四大必备剪辑软件推荐!

在这个视觉为王的时代&#xff0c;视频内容的创作和编辑已经成为了一种艺术形式。无论是个人创作者还是专业团队&#xff0c;都在寻找能够提升工作效率和创作质量的工具。今天&#xff0c;就让我们一起探索几款市面上广受好评的视频剪辑工具&#xff0c;它们将帮助你将创意变为…