C语言的分支与循环

分支和循环

分支语句

一、if分支语句

(一)语法结构

if (条件) {
	代码块
}
//当条件判断为真时,就执行循环语句

二、else分支语句

(一)语法结构

if (条件) {
	代码块  
}
else {
	代码块
}
//解释:当 if 语句中所有分支判断都为假时,则执行 else 语句的代码块

三、嵌套if语句

我们可以在一个if语句内再使用一遍if语句,这就叫嵌套if语句,但是这样的写法比较繁琐,因此我们可以写成else if形式

(一)语法结构

if (条件) 
{
	代码块
}
else if (条件)		//else if 语句相当于 if 语句嵌套,当if语句内条件判断为假时,就进行else if语句的条件判断
{
	代码块
}
else
{
	代码块
}

四、关系操作符

  • == 等于

  • >= 大于等于

  • <= 小于等于

  • != 不等于

  • > 大于

  • < 小于

关系操作符不可以连用, 例如 a <= b <= c

五、条件操作符(三目操作符)

三目操作符其实是简化的if else语句

(一)语法结构

条件 ? 表达式1 ? 表达式2
//解释:如果条件为真,则执行表达式1,反之,则执行表达式2

六、逻辑操作符

(一)逻辑取反运算符!

!a 就是将真变为假,将假变为真

(二)逻辑与运算符

a && b 全真则真,一假则假

(三)逻辑或运算符

a || b 一真则真,全假则假

(四)短路

逻辑操作符运算都是从左往右计算的,
对于&&,如果左边为假,右边则没必要计算了,因为该表达式一定为假了
对于||,如果左边为真,右边则没必要计算了,因为该表达似一定为真了

七、switch分支语句

switch语句是一种特殊的if else分支结构

(一)语法结构

switch (表达式) {
 case1: 
		代码块
 case2: 
		代码块
 default: 
		代码块
}
//解释:switch中文意思为“开关”,我们可以把switch语句理解为开关,根据表达式不同的值,匹配相应的case后面的值,如果匹配到对应的值,就执行该case分支下面的代码块,如果匹配不到对应的值,就执行default分支

注意:

  • switch后的表达式必须为整型表达式

  • case 后的值,必须是整形常量表达式

(二)switch语句的break

switch语句在匹配对应的case值的时候,总是不撞南墙不回头,如果没有break的阻挡,switch语句会一直执行下去,甚至执行到其他case语句的代码块,所以break的作用就是挡住switch语句让他跳出switch。所以break十分重要,是让switch语句成为分支语句的关键,否则分支就成为了遍历。不过一个case不一定就必须带一个break,这要看具体需求而定

(三)switch语句的注意事项

  • switch后面的表达式必须为整型表达式

  • case后面的值必须为常量,不能为变量

循环语句

一、while循环

(一)语法结构

while (条件判断) {
	循环语句
}

(二)while循环的执行过程

根据while条件判断的真假(0是假,非0是真),如果是假,就直接跳过这个while语句,如果是真,那就开始第一次执行循环语句,循环语句执行完之后,再跳回该while语句的条件判断,再进行一次条件判断,重复上面的步骤。使用时要避免出现死循环.

二、for循环

(一)语法结构

if (表达式1;表达式2;表达式3) {
	循环语句
}

(二)三个表达式的说明

  • 表达式1:条件初始化(注意要事先声明创建变量)
  • 表达式2:条件判断
  • 表达式3:循环语句执行之后的调整

(三)for循环的执行过程

先拿着表达式1初始化的变量去进行表达式2的条件判断,若条件判断为真,就开始第一次的循环语句的执行,第一次循环语句的执行结束之后,再根据表达式3对表达式1的变量进行调整变化,之后再拿着调整变化之后的变量再进行表达式2的条件判断,若条件判断为真,就开始第二次的循环语句的执行,第二次循环语句的执行结束之后,再根据表达式3对表达式1的变量进行调整变化,重复以上步骤

三、do while循环

(一)语法结构

do {
	代码块
}
while(条件判断);

(二)do while循环的执行过程

先干再说,先把do下面的代码块执行之后,再根据while后面的条件进行判断,若判断结果为真,那么就再执行一次do后面的代码,执行之后再进行条件判断,知道条件判断为假才停止执行

四、breakcontinue语句

(一)区别

break语句用于永久终止循环,从而跳出循环
continue语句用于跳过本轮循环,进行下一轮循环

(二)代码解释

break :

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++) {
		if (i == 4) {
			break;
		}
		printf( "%d ",i );
	}
}
//输出结果:1 2 3 

coutinue :

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++) {
		if (i == 4) {
			continue;
		}
		printf("%d ", i);
	}
}
//输出结果:1 2 3 5 6 7 8 9 10 

五、循环的嵌套

循环的嵌套在一些地方也可以用到,比如说求质数的问题
我们可以这样解决:

#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;

	for (i = 100; i <= 200; i++) {		//产生100—200的所有数
		int flag = 1;
		for (j = 2; j <= i - 1;j++) {		//拿2开始的数一个一个去除i
			if (i % j == 0) {		//看能不能被整除
				flag = 0;		//如果被整除,那么flag标志就变为0
				break;		//跳出这个if条件句
			}
		}
		if (flag == 1) {
			printf("%d ", i);		//如果flag为1,那么就代表i为质数,那么就打印出来
		}
	}
	return 0;
}

求质数有很多种编程方法,此处只是运用了较为简单的一种并且没有进行优化

六、goto语句

类似一个锚点

代码解释

#include <stdio.h>
int main()
{
 printf("1 ");
 goto next;  //看到了goto语句,并把next作为锚点
 printf("2 ");
 
next:  //这里就是被打了锚点的next,代码直接跳转到这里开始执行
 printf("3 "); 
 return 0;
}
//输出结果:1 3 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值