[一篇读懂]C语言三讲:选择、循环

news2025/7/17 4:42:25

[一篇读懂]C语言三讲:选择、循环

  • 1. 选择if-else讲解
    • 1 关系表达式与逻辑表达式
      • 计算表达式的过程
    • 2 if-else语句
      • 【例】判断输入值是否大于0
  • 2. 循环while,for讲解,continue,break讲解
    • 1 while循环
      • 【例】计算1到100之间所有整数之和
    • 2 for循环
      • 【例】for循环语句实现计算1到100之间的所有整数之和
    • 3 continue语句
    • 4 break语句
  • 总结
    • 1.1
    • 1.2
    • 2.1
    • 2.2
    • 2.3
    • 2.4


1. 选择if-else讲解

1 关系表达式与逻辑表达式

  • 算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等。

计算表达式的过程

计算表达式 5 > 3 & & 8 < 4 − ! 0 5>3\&\&8<4-!0 5>3&&8<4!0
1

2 if-else语句

  • if 判断条件(表达式)为真,就执行某个语句,反之不执行这个语句。
  • if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句。
    if
  • if后面不能加分号。
    如果有else分支语句,加分号导致编译不通过;
    如果没有else分支语句,加分号导致i无论取何值,都执行if语句。

【例】判断输入值是否大于0

#include <stdio.h>
//练习if与else
int main()
{
	int i;
	while (scanf("%d", &i))
	{
		if (i > 0)//不要在if后加分号
		{
			printf("i is bigger than 0\n");//为了避免加代码时出现问题 - 加大括号!
			//不加大括号的问题1:新加的语句不属于if语句!
			//不加大括号的问题2:悬空的else和那个if配对?
		}
		else
		{
			printf("i is not bigger than 0\n");
		}
	}
	return 0;
}
  • if 语句和else语句也可以多个同时使用(多分支语句)。
  • 无论有多少个if语句和else if语句,程序都只会执行其中的一个语句。
  • if语句支持多层嵌套。
    注意,使用if嵌套语句时,要考虑“悬空的else”问题。例如,
if(i > 1)
	if(i < 10)
		printf("i > 1 and i < 10\n");
	else 
		printf("no,they are not\n")
  • C语言中的else子句从属于最靠近它的不完整if语句。
  • 上例中的else子句从属于第二个if语句,如果想让它从属于第一个if语句,那么可以用一个花括号把第二个if语句包含在一个单独的代码块内:
if(i > 1)
{
	if(i < 10)
		printf("i > 1 and i < 10\n");
}
	else
		printf("no,they are not\n");
  • 在if语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误。

2. 循环while,for讲解,continue,break讲解

1 while循环

  • 当while表达式的值非0时,执行while语句中的内嵌语句,从而实现语句多次执行的效果。。
  • 先判断表达式,后执行语句。
  • 为了避免程序进入死循环(不停地进行循环操作),在语句中需要有让表达式趋近于假的操作来使程序跳出循环。
    while
  • while后面不能加分号,程序会发生死循环。
  • while语句应使用花括号,可使程序更加清晰,避免向循环内添加语句时出错。

【例】计算1到100之间所有整数之和

#include <stdio.h>
//计算从1到100的和
int main()
{
	int i = 1, total = 0;
	//while后加分号 - 死循环
	//循环体内没有让while趋于假的操作 - 死循环
	while (i <= 100)//while后不能加分号 - 否则死循环
	{
		total = total + i;//把i加到total上
		i++;//i++即 - i=i+1 - 让语句趋于假
	}
	printf("total = %d\n", total);
	return 0;
}

2 for循环

  • for循环语句使用最为灵活,可用于循环次数已经确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况。
  • for语句完全可以替代while循环语句。
for(表达式1;表达式2;表达式3) 语句;
  1. 先求解表达式1.
  2. 求解表达式2,若其值为真(值为非0),则先执行for语句中指定的内嵌语句,后执行第(3)步。若其值为假(值为0),则结束循环,转到第(5)步。
  3. 求解表达式3。
  4. 转回第(2)步继续执行。
  5. 循环结束,执行for语句下面的语句。
    for
  • for循环语句中必须且只能有两个分号。
  • for循环语句后加分号不会死循环,会结果不对。

【例】for循环语句实现计算1到100之间的所有整数之和

#include <stdio.h>

int main()
{
	int i, total;
	for (i = 1, total = 0; i <= 100; i++)//必须有两个分号 - 不能加分号 - 不会死循环,会结果不对
	{
		total += i;
	}
	printf("total = % d\n", total);
	return 0;
}
  • for循环的可读性要比while循环的好,能使用for循环时不要强制改为while循环。

3 continue语句

  • continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断。
  • 当continue用于while和do while循环中时,注意不要跳过让循环趋近于假的语句。
    【例】对1到100之间的奇数进行求和
#include <stdio.h>
//for 循环实现从1加到100
//使用continue求奇数的和
int main()
{
	int i, total;
	for (i = 1, total = 0; i <= 100; i++)//for小括号后不要加分号
	{
		if(i % 2 == 0)
		{
			continue;//continue下面的代码均不会得到执行
		}
		total += i;
	}
	printf("total = %d\n", total);
	return 0;
}

4 break语句

  • break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立。
  • break语句也可用在while循环和do while循环中,起结束对应循环的作用。
    【例】break语句实例
#include <stdio.h>
//使用break跳出循环
int main()
{
	int i, total;
	for (i = 1, total = 0; i <= 100; i++)//for小括号后不要加分号
	{
		if (total > 2000)
		{
			break;//当和大于两千时,循环结束
		}
		total += i;
	}
	printf("total = %d,i = %d\n", total,i);
	return 0;
}

总结

1.1

  • 算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等。

1.2

  • if 判断条件(表达式)为真,就执行某个语句,反之不执行这个语句。

  • if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句。

  • if后面不能加分号。
    如果有else分支语句,加分号导致编译不通过;
    如果没有else分支语句,加分号导致i无论取何值,都执行if语句。

  • if 语句和else语句也可以多个同时使用(多分支语句)。

  • 无论有多少个if语句和else if语句,程序都只会执行其中的一个语句。

  • if语句支持多层嵌套。

  • C语言中的else子句从属于最靠近它的不完整if语句。

  • 在if语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误。

2.1

  • 当while表达式的值非0时,执行while语句中的内嵌语句,从而实现语句多次执行的效果。。
  • 先判断表达式,后执行语句。
  • 为了避免程序进入死循环(不停地进行循环操作),在语句中需要有让表达式趋近于假的操作来使程序跳出循环。
  • while后面不能加分号,程序会发生死循环。
  • while语句应使用花括号,可使程序更加清晰,避免向循环内添加语句时出错。

2.2

  • for循环语句使用最为灵活,可用于循环次数已经确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况。
  • for语句完全可以替代while循环语句,for循环的可读性要比while循环的好,能使用for循环时不要强制改为while循环。
  • for循环语句中必须且只能有两个分号。
  • for循环语句后加分号不会死循环,会结果不对。

2.3

  • continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断。
  • 当continue用于while和do while循环中时,注意不要跳过让循环趋近于假的语句。

2.4

  • break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立。
  • break语句也可用在while循环和do while循环中,起结束对应循环的作用。

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

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

相关文章

【MySQL进阶】B+树索引的使用

【MySQL进阶】B树索引的使用 文章目录【MySQL进阶】B树索引的使用一、索引的代价二、B树索引适用的条件1、全值匹配2、匹配左边的列3、匹配列前缀4、匹配范围值5、精确匹配某一列并范围匹配另外一列6、用于排序7、用于分组三、回表的代价1、回表的代价2、覆盖索引四、如何挑选索…

论文管理系统(登录功能)

目录 一、后端部分 1.1 实体类 1.2 UserMapper类 1.3 Service层 接口 实现类 1.4 controller层 1.5 拦截器 二、前端部分 效果图 源码如下 代码讲解 准备工作和数据库都已经准备好了,接下来我们来写登录功能,登录功能我们通过mybatisplus来码写,所以不需要在UserMapper.…

台灯到底对眼睛好不好?2022精选眼科医生推荐护眼灯

台灯是我们最常见的照明工具了&#xff0c;台灯对眼睛会有一定的伤害的&#xff0c;光对人的视觉会产生一些影响的&#xff0c;选择质量过关的护眼台灯&#xff0c;对人的眼睛伤害是比较小的&#xff0c;基本上在光照进行优化&#xff0c;做到无可视频闪、无眩光等&#xff0c;…

巯基化PEG试剂——N3-PEG-SH,Azide-PEG-Thiol,叠氮-聚乙二醇-巯基

巯基化PEG化学试剂叠氮-聚乙二醇-巯基&#xff0c;其英文名为Azide-PEG-Thiol&#xff08;N3-PEG-SH&#xff09;&#xff0c;它所属分类为Azide PEG Thiol PEG。 此peg试剂的分子量均可定制&#xff0c;有&#xff1a;5k N3-PEG-SH、20k 叠氮-聚乙二醇-巯基、10k N3-PEG-SH、…

[11]重绘与回流

在看今天的分享之前&#xff0c;希望大家先关注一下&#xff0c;因为你可以免费获取一枚前端路上的陪跑师。 什么是回流 回流&#xff1a;英文是reflow 当render tree中的一部分(或全部)&#xff0c;因为元素的规模尺寸、布局、隐藏等改变 而需要重新构建&#xff0c;这就是回流…

基于web在线餐饮网站的设计与实现——蛋糕甜品店铺(HTML+CSS+JavaScript)

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

你的新进程是如何被内核调度执行到的?(上)

所谓的运行队列到底长什么样子、新进程是如何被加入进来的、调度是如何选择一个新进程的、新进程又如何被切换到 CPU 上运行的&#xff0c;这些细节咱们都没提到。今天就来展开看看这些进程运行背后的原理。 通过今天的文章&#xff0c;你将对以下两个问题有个更深入的理解。 …

mysql高手进阶优化篇

​MySql理论 逻辑架构 连接层-->服务层-->引擎层-->存储层 存储引擎 查看方式 1.查看mysql现在提供的搜索引擎--->show engines 2.查看mysql当前默认存储引擎show variables like storageenginestorage_enginestorageengine 存储引擎对比 MyISAM: BTree叶节…

Vue快速入门二:Vue绑定事件、Vue中的this指向、增加class选择器、动态创建标签

Vue定义点击事件&#xff1a; <body><div id"box"><button click"handleChange()">change</button></div><script>var vm new Vue({el:"#box",//定义方法methods:{//handleChange:function(){}//简写法&a…

数据结构:单链表

用&#xff08;带头节点&#xff09;单链表完成图书统计。节点结构包括书籍编号&#xff0c;书籍名以及对应作者。功能包括增加&#xff08;尾插法和指定位置插入法&#xff09;、删除、修改、查看。 一、定义节点结构 每一个节点都包括这些变量&#xff0c;构造器复杂将传入的…

去除 Zotero + Obsidian 复制粘贴参考文献表时的多余空行(ctrl+shift+C)

前言 最近在用 Zotero 做文献管理&#xff0c;用 Obsidian 记笔记。但是使用的时候&#xff0c;有一个问题不大&#xff0c;但是有时候很烦人的情况&#xff1a;粘贴参考文献格式。在粘贴的时候总会莫名多出来几个空行&#xff0c;需要手动删除。 举个例子&#xff1a; 下面…

蚂蚁链牵头两项区块链国际标准在ITU成功立项

近日&#xff0c;国际电信联盟第十六研究组&#xff08;简称ITU-T SG16&#xff09;召开全体会议。会上&#xff0c;由蚂蚁链牵头的两项区块链国际标准获得立项通过。包括&#xff1a; ITU-T H.DLT-SCLMR “Smart contract lifecycle management requirements for distributed…

Arduino开发实例-PS/2键盘驱动

PS/2键盘驱动 1、PS/2通信协议介绍 物理 PS/2 端口是 6 针 DIN 连接器。 连接器引脚如下所示: Vcc/Ground 为设备提供电源 (5V),而 Data 和 Clock 是两条集电极开路线,带有上拉电阻到 Vcc。 电阻值并不重要(1 – 10 KOhm),最小值给出最短的上升时间,而较大的值允许更少…

AES简写

一、简介引入 密码学中的高级加密标准&#xff08;Advanced Encryption Standard&#xff0c;AES&#xff09;&#xff0c;又称Rijndael加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。 这个标准用来替代原先的DES&#xff08;Data Encryption Standard&#xff0…

kingdee漏洞存在多个安全漏洞(通用管理账号+获得数据库密码+远程代码执行)

kingdee漏洞详情,金蝶eas存在通用管理账号获得数据库密码漏洞&#xff0c;金蝶apusic存在远程代码执行漏洞。 下面的信息希望乌云在确认漏洞予以模糊处理&#xff0c;以免对厂商和用户产生不良影响&#xff1a; 漏洞一、金蝶eas系统存在一个默认的管理员账号admr&#xff0c;密…

vBox+K8s坑记录

vBoxKubernetesFlannelDashboard一、VBox虚拟机IP地址重复问题1、通过导入ova系统镜像2、复制同一个镜像导致IP重复&#xff0c;无法拉取镜像复制多个系统镜像后&#xff0c;修改IP地址curl无效&#xff08;注同时启动两个及以上&#xff0c;会出现该问题&#xff09;导致拉取镜…

JVM堆内存泄露分析

一、背景 公司有一个中间的系统A可以对接多个后端业务系统B&#xff0c;一个业务系统以一个Namespace代表, Namespace中包含多个FrameChannel(用holder保存)&#xff0c;表示A连接到业务系统B各服务实例的连接&#xff1b;A与B通过GRPC通信。 二、现象 测试使用一台服务实例A&…

立创EDA仿真入门2 实战全桥整流

立创EDA仿真入门2 实战全桥整流一、全桥整流原理二、操作步骤1. 在立创EDA新建仿真项目和原理图2. 绘制原理图电阻的作用函数发生器的设置3. 点仿真4. 使用电容代替电阻5. 加上负载一、全桥整流原理 全桥整流也称整流桥堆&#xff0c;使用4个或更多相同的二极管组成整流电路&am…

四、MySQL 提权方式

1 UDF 提权 secure_file_priv 是用来限制 load dumpfile、into outfile、load_file() 函数在哪个目录下拥有上传或者读取文件的权限 show global variables like secure%; 修改 my.cnf 文件,在 [mysqld] 块下,如果没有 secure_file_priv 则新增 指定目录:secure_file_pri…

[附源码]java毕业设计商城管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…