分支与循环

目录

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);elseprintf("%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");elseprintf("输入的数字是负数\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");elseprintf("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时,就无需执行右操作数

谢谢观看

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

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

相关文章

若依 Vue 前端分离 3.8.8 版中生成的前端代码中关于下拉框只有下拉箭头的问题

生成代码修改前 <el-form-item label"课程学科" prop"subject"><el-select v-model"queryParams.subject" placeholder"请选择课程学科" clearable><el-optionv-for"dict in course_subject":key"dict…

【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer

阅读时间&#xff1a;2023-12-20 1 介绍 年份&#xff1a;2022 作者&#xff1a;Lina M. Tran&#xff0c;Adam Santoro&#xff0c;谷歌DeepMind 期刊&#xff1a; Proceedings of the National Academy of Sciences 引用量&#xff1a;13 代码&#xff1a;https://github.c…

A4-C四驱高防轮式巡检机器人

在当今数字化和智能化迅速发展的时代&#xff0c;旗晟智能带来了一款革命性的创新产品——A4-C四驱高防轮式巡检机器人。这款机器人以其卓越的性能和多功能性&#xff0c;为工业巡检领域带来了全新的解决方案。 一、产品亮点 1、四驱动力与高防护设计 四驱高防轮式巡检机器人…

ASUS/华硕枪神4 G532L G732L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;Windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

计算机应用数学--第一次作业

第一次作业计算题编程题 &#xff08;20分&#xff09; 第一次作业 计算题 &#xff08;20分&#xff09;求 E ( X ) E(X) E(X)&#xff0c; V a r ( X ) Var(X) Var(X) &#xff08;1&#xff09; X X X 服从 [ a , b ] [a,b] [a,b] 均匀分布。 &#xff08;2&#xff09;…

2024年智慧教育与社会科学国际会议 (ICSSS 2024)

2024年智慧教育与社会科学国际会议 (ICSSS 2024) 2024 International Conference on Smart Education and Social Sciences 【重要信息】 大会地点&#xff1a;北京 大会官网&#xff1a;http://www.icicsss.com 投稿邮箱&#xff1a;icicssssub-conf.com 【注意&#xff1a;稿…

Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

前情提要 在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现&#xff0c;但发现diffusers库中各复杂功能的添加较为麻烦&#xff0c;而且难以实现对采样器的添加&#xff0c;safetensors格式模型的读取。在官网上找到了webui有专门的api接口&am…

1117 数字之王

solution 判断现有数字是否全为个位数 全为个位数&#xff0c;找出出现次数最多的数字&#xff0c;并首行输出最多出现次数&#xff0c;第二行输出所有出现该次数的数值不全为个位数 若当前位数值为0&#xff0c;无需处理若当前位数值非0&#xff0c;则每位立方相乘&#xff0…

10.x86游戏实战-汇编指令lea

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Prometheus + Grafana 监控系统搭建使用指南-redis_exporter 安装与配置

Redis 接入 Prometheus 监控系统 系列文章目录 Prometheus 的安装部署Grafana的安装部署Linux服务器接入Prometheus监控-Node Exporter 安装指南Prometheus 接入SpringBoot微服务监控Mysql 接入 Prometheus RocketMQ 接入Prometheus 监控ElasticSearch 接入 PrometheusNacos …

vue使用axios获取信息的案例

List组件&#xff08;用来展示搜索的信息&#xff09; <template><div class"row"><!-- 列表数据 --><div class"card" v-for"user in info.users" :key"user.login" v-show"info.users.length">&l…

智慧校园-资产管理系统总体概述

智慧校园资产管理系统是面向教育机构设计的一体化数字平台&#xff0c;其核心目标在于通过先进的信息技术手段&#xff0c;全面优化校园内部的资产管理流程。该系统致力于提升资产管理的效率与透明度&#xff0c;同时降低成本并确保所有操作符合财务及审计规范&#xff0c;为校…

RNN文献综述

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种专门用于处理序列数据的神经网络模型。它在自然语言处理、语音识别、时间序列预测等领域有着广泛的应用。本文将从RNN的历史发展、基本原理、应用场景以及最新研究进展等方面进行综述。 历…

TC3xx NvM小细节解读

目录 1.FlsLoader Driver和FlsDmu Driver 2. FlsLoader小细节 3.小结 大家好&#xff0c;我是快乐的肌肉&#xff0c;今天聊聊TC3xx NvM相关硬件细节以及MCAL针对NvM的驱动。 1.FlsLoader Driver和FlsDmu Driver 在最开始做标定的时候&#xff0c;认为标定数据既然是数据&…

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍&#xff1a;02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程&#xff0c;小白必看 摘要 本文主要介绍了大学生参加电子计算机类比赛&#xff08;电赛、光电设计大赛、计算机设计大赛、嵌入式芯片与系统设计大赛等比赛&#xff09;的流程和涉及到的知识…

3dmax全景图用什么渲染软件好?渲染100邀请码1a12

全景图是常见的效果图类型&#xff0c;常用于展示大型空间&#xff0c;如展厅、会议室等。全景图的制作需要渲染&#xff0c;下面我介绍几个常用的渲染软件分享给大家。 1、V-Ray&#xff1a;十分流行的渲染引擎&#xff0c;功能强大&#xff0c;它提供了高质量的光线追踪技术…

六、资产安全—信息分级资产管理与隐私保护练习题(CISSP)

六、资产安全—信息分级资产管理与隐私保护(CISSP): 六、资产安全—信息分级资产管理与隐私保护(C

RAM和ROM的区别

RAM和ROM的区别 RAM和ROM都是用来存东西的&#xff0c;比如我们熟悉的CPU缓存、电脑和手机的内存就是属于RAM&#xff0c;而固态硬盘、U盘&#xff0c;还有我们买手机时候说的32G、64G的存储空间&#xff0c;就属于ROM。RAM和ROM的区别&#xff0c;简单说就是RAM在断电之后&am…

正则表达式语法+常用正则表达式

1. 简介 1> 正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为"元字符"&#xff09;&#xff0c;可以用来描述和匹配字符串的特定模式 2> 正则表达…

沙龙回顾|MongoDB如何充当企业开发加速器?

数据不仅是企业发展转型的驱动力&#xff0c;也是开发者最棘手的问题。前日&#xff0c;MongoDB携手阿里云、NineData在杭州成功举办了“数据驱动&#xff0c;敏捷前行——MongoDB企业开发加速器”技术沙龙。此次活动吸引了来自各行各业的专业人员&#xff0c;共同探讨MongoDB的…