C语言选择循环大集合

C语言结构

C语言程序设计主要分为顺序结构,选择(分支)结构和循环结构3种。

  • 循环结构——程序按照语句顺序一条一条执行即可。
  • 选择结构——程序依据不同的条件执行不同语句的场景,常用if_else,switch语句。
  • 循环结构——用于多次执行同一段语句,常用for,while,do_while语句。

这里主要向大家介绍选择结构和循环结构的使用方法和注意事项。

选择结构

if_else

基本用法

if(条件)
{
	语句;
}
else if(条件)
{
	语句;
}
else
{
	语句;
}

需要注意的是这里的语句只有一条,如果有多条语句,需要用{}包括。
执行流程
1.整个if_else语法由上到下执行,每次执行到if/else if都会判断条件是否为真,为真则执行语句,为假,则不执行。若条件均是假,则执行else里面的语句。

switch

是一种独特的if_else结构,主要用于实现判断条件有多个结果的情况。

基本用法:

	switch (state)
	{
		case value1:语句1;break;
		case value2:语句2;break;
		case value3:语句3;break;
		default:语句4;break;
	}

1.上述用法是用的最广的一种,不唯一。
2. state:必须是一个整型表达式
3. value:必须是一个整型常量表达式
4.case 和 value之间必须有空格。
4. 这里的语句可以不止一条。
5. break不是每个语句后面都需要有,需要看自己程序的功能。决定了程序何时跳出switch语句。
6. 此处的case和default顺序无关紧要,但是建议default放到最后。

程序执行流程

当state的数值等于case后面的数值时,程序将直接跳到对应的case语句后面执行代码。
例如:state的结果和value2相等,将会执行语句2,语句2执行完成之后,遇到break,将会退出 switch语句。当state的结果和value都不相等时,将会执行语句4,之后遇到break,将会退出switch 语句。此处的break的意思是退出switch语句,如果没有遇见break,将会一直执行后面的语句。例如如果语句2后面没有break,当state等于value2的时候,程序将执行语句2,之后执行语句3 ,直到遇到语句3后面的break才会退出switch语句。这因为switch的state的表达式只能决定程序的入口,不能决定出口,需要使用break语句跳出switch语句。
实例:

int main()
{
	int a = 0;
	printf("请输入一个数字\n");
	while (1)
	{
		scanf("%d", &a);
		switch (a)
		{
			case 1:printf("1.你输入的数字时%d\n", a); break;
			case 2:printf("2.你输入的数字时%d\n", a); 
			case 3:printf("3.你输入的数字时%d\n", a); break;
			default:printf("4.你输入的数字时%d\n", a); break;
		}
	}
	return 0;
}

程序运行结果

循环结构

for

基本用法

for(表达式1; 表达式2; 表达式3;)
{
	语句;
}
  1. 表达式1用于循环变量的初始化
  2. 表达式2用于循环条件的判断
  3. 表达式3用于循环变量的调整
  4. 该循环大多数情况下用于循环次数已知的情况

执行流程
1.执行表达式1将循环变量初始化。
2.判断循环条件是否为真,为真则执行for循环语句为假则退出循环
3.语句执行完毕之后,执行表达式3,调整循环变量,再执行表达式2,判断循环条件是否为真。
4.循环2,3步骤,直到循环条件为假,退出循环。
在这个过程中,表达式1执行一次,表达式2和表达式3循环执行。

while

循环变量初始化;
while (循环条件)
{
	语句;
	循环变量调整;
}

while循环执行流程和for循环一样。不同之处在于for循环将循环变量初始化,判断循环条件和循环变量调整放到了一块,方便阅读。而while循环则将这三者分散在程序的不同位置。

do while

do
{
	语句;
} while (循环条件);

执行流程
该循环首先执行语句,执行完成之后判断循环条件是否为真,为假则退出,为真则执行语句。
该循环先执行语句,后判断,于for,while先判断,后执行不同。
主要用于必须执行一次循环的场景,这点比较特殊。在这三个循环中使用最少。

循环的嵌套

在实际的代码应用中,往往不是单一的循环就能够完成程序的目的,需要多个循环嵌套使用,在这里不多讲,大家可以看代码练习里面的程序自主练习。里面基于题目要求给出了详细代码,包括了循环,判断以及他们之间的嵌套使用。

附加小知识

break,continue

break和continue是C语言的两个关键字,主要用于在程序遇到某些情况是,提前终止循环的场景。不过,二者也有区别,break是退出所在层循环,每个break只能退出一层。而continue则是停止执行该次循环continue之后的语句,接着开启下次循环。
实例:

int main()
{
	int i = 0;
	printf("break演示\n");
	for (i = 0; i < 10; i++)
	{
		if (i == 5)
		{
			break;
		}
		printf("第%d次循环\n", i);
	}
	printf("\n", i);
	printf("continue演示\n");
	for (i = 0; i < 10; i++)
	{
		if (i == 5)
		{
			continue;
		}
		printf("第%d次循环\n", i);
	}
	return 0;
}

在这里插入图片描述
break中当i== 5时,遇到了break,退出了整个循环,没有了之后的循环。
而continue中 当i==5,只是停止了第5次循环,之后的6-9次循环依旧执行。

goto

goto是C语言提供的一个跳转语句,可以实现再一个函数内部跳转到指定标号的作用。当然也可以用于直接跳出多层循环。需要注意的是,这里必须是一个函数内部才可以跳转。
实例:

int main()
{
	int i = 0;
	int j = 0;
	printf("break演示\n");
	printf("\n");
	while (i < 10)
	{
		for (j = 0; j < 10; j++)
		{
			if (j == 2)
			{
				goto flag;
			}
			printf("哈哈\n");
		}
	}
flag:printf("goto跳到指定位置\n");
	return 0;
}

在这里插入图片描述
当j==2 时,遇到goto,直接跳到flag位置,执行printf(“goto跳到指定位置\n”);

代码练习

分支与循环代码练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值