对C语言分支和循环语句的学习总结

1.if语句

1.1 if

	if (表达式)
	语句

表达式为(非0),则语句执行;表达式为(0),则语句不执行。

1.2 else

	if(表达式1)
		语句1
	else
		语句2

if的表达式为假,不执行语句1时,则执行else后的语句2·

1.3 多条语句

在 if 和 else 语句中默认都只控制⼀条语句。如果想要if语句控制多条语句,要用{}将代码括起来,else同理。

1.4 多分支

在if else语句中,else可以与另⼀个 if 语句连用,构成多分支的场景。

	if(表达式1)
		语句1;
	else if(表达式2)
		语句2;
	else if(表达式3)
		语句3;
	else
		语句4;

1.5 悬空else问题

当有多个else和if时,else总与前面最近的、还没有匹配的if匹配。

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if(a == 1)
		if(b == 2)
			printf("hehe\n");
	else
			printf("haha\n");
return 0;

以上代码中else与第二个if匹配。

2. switch语句

2.1 switch语句的格式

switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。

	switch (表达式)
	{
		case value1: 语句1
		case value2: 语句2
		...
		default: statement
	}

上面代码中,根据switch后边的 表达式产生的不同的值,执行相应的 case 分支,如果找不到对应的值,就执行default分支。
注意:
1.switch后的表达式必须是整型表达式。
2.case后的值必须是整型常量表达式。

2.2 switch语句中的break

switch语句中只有使用break才能跳出switch语句,如果某一个case语句后没有break语句,代码就会继续往下执行,则有可能执行其他case语句中的代码,直到遇到break语或者switch语句结束。
例如:

#include<stdio.h>
int main()
{
		switch(0)
		{
		case 0:
			printf("hello\n");
		case 1:
			printf("world\n");
			break;
		case 2:
			printf("haha\n");
		}
		return 0;
}

输出:
hello
world

代码在执行完case 0后的语句后没有遇见break语句,所以继续往下执行了case 1语句,直到遇见break语句后才结束了switch语句。

2.3 switch语句中的default

在使用switch语句的时候,我们常会遇见switch后的表达式中的值无法匹配代码中的case语句的时候。这是就要在switch语句中加入default。当switch后的常数不等于所有case后的常数时,就会执行default后的语句。

3. while循环

3.1 while循环的格式

while(表达式)
{
	语句;
}

3.2 while循环的执行流程

当while后的表达式为真时,执行while后的语句,当表达式恒为真时,那么while语句则会一直循环执行while后的语句。
例如:

#include<stdio.h>
int main()
{
	int i  = 1;
	while(i <= 10)
	{
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

输出:1 2 3 4 5 6 7 8 9 10.
当i大于10时,不满足while后的表达式,则表达式为假,结束了循环。

4 for循环

4.1 for循环的格式

for(表达式1;表达式2;表达式3)
{
	语句;
}

表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整

4.2 for循环的执行流程

首先执行表达式1初始化循环变量,接下来执行表达式2的判断部分,为真则执行循环语句,循环语句执行完后再执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,为真则继续执行,为假则结束循环。
整个循环过程中,表达式1初始化部分只被执行1次。
例如:

#include <stdio.h>
int main()
{
	int i = 0;
	for(i = 1;i<=10;i++)
	{
		printf("%d ", i);
	}
	return 0;
}

输出:1 2 3 4 5 6 7 8 9 10

4.3 for循环的特殊写法

1.for循环中的三个表达式可以选择性省略,判断部分被省略,意味着判断部分恒成立,可能会造成死循环。
2.多个变量控制for循环

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	for(a = 0,b = 10;a < b;a++,b--)
	{
		printf("a = %d, b = %d", a, b);
	}
	return 0;
}

5 do-while循环

5.1 do-while的格式

do
{
	语句;
}while(表达式);

5.2 do-while的执行流程

do-while循环先执行大括号中的语句,执行完语句后,再去执行while后面的表达式,若表达式为真,则继续循环,为假则结束循环。
所以do-while循环至少会执行一次循环体。

6 break和continue语句

break的作用是永久终止循环,只要break被执行,就会直接跳出循环,往后执行。
continue的作用是跳过本次循环中continue后面的代码。

6.1 while循环中的break和continue

break举例

#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
	if(i == 5)
	break;//当i等于5后,就执⾏break,循环就终⽌了
	printf("%d ", i);
	i = i + 1;
}
return 0;
}

输出:1 2 3 4

打印了1 2 3 4后,当i=5是,循环在break处终止,不再打印,不再循环。
所以 break 的作用就是永久的终止循环,只要 break 被执行, break 外的第⼀层循环就终止了。
那以后我们在循环中,想在某种条件下终止循环,则可以使用 break 来完成我们想要的效果。

continue举例

#include <stdio.h>
int main()
{
	int i = 1;
	while(i <= 10)
	{
		if(i == 5)
		continue;/*当i等于5后,就执⾏continue,直接跳过continue后的代码,去循环的判断的地⽅
因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环*/
printf("%d ", i);
i = i + 1;
}
return 0;
}

到这里我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进行下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。

6.2 for循环中的break和continue

break举例

#include <stdio.h>
int main()
{
	int i = 1;
	for(i = 1; i <= 10; i++)
	{
		if(i == 5)
			break;
		printf("%d ", i);
	}
	return 0;
}

输出:1 2 3 4

continue举例

#include <stdio.h>
int main()
{
	int i = 1;
	for(i = 1; i <= 10; i++)
	{
	if(i == 5)
	continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
	printf("%d ", i);
	}
	return 0;
}

输出:1 2 3 4 6 7 8 9 10

所以在 for 循环中 continue 的作用是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用
continue 来实现。

6.3 do-while中的break和continue

do.while 语句中的 break 和 continue 的作用和 while 循环中几乎⼀模⼀样,在这里不过多赘述。

7 循环的嵌套

举例:找到100~200间的素数

#include <stdio.h>
int main()
{
	int i = 0;
	//循环产⽣100~200的数字
	for(i = 100; i <= 200; i++)
	{
		//判断i是否为素数
		//循环产⽣2~i-1之间的数字
		int j = 0;
		int flag = 1;//假设i是素数
		for(j = 2; j < i; j++)
		{
			if(i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if(flag == 1)
			printf("%d ", i);
	}
	return 0;
}

8 goto语句

goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
例如:

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	printf("跳过了haha的打印\n");
	return 0;
}

在多层循环的代码中,可以用goto快速跳出循环。

总结

以上就是我在学习c语言中对分支和循环语句的知识总结,希望对大家有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值