C语言之分支和循环语句

分支和循环语句

当谈到C语言中的分支和循环语句时,通常指的是条件语句和迭代语句。条件语句是根据条件的真假来决定程序流程的一种结构。迭代语句用于重复执行一段代码,直到满足特定条件为止。

条件语句

if语句

if语句根据给定的条件来执行不同的操作。其条件为真则执行该if语句中所包含的操作,为假则不执行。

语法结构

其基本语法如下:

if (condition) {
// 如果条件为真,则执行这里的代码
} else {
// 如果条件为假,则执行这里的代码
}

另外,还有一种扩展的条件语句是if-else if-else语句,用于多个条件的判断。其语法如下:

if (condition1) {
// 如果条件1为真,则执行这里的代码
} else if (condition2) {
// 如果条件2为真,则执行这里的代码
} else {
// 如果前面条件都为假,则执行这里的代码
}

if语句代码示例

下面用一些代码向大家展示一下if语句的作用

#include
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("可以玩王者荣耀了");
	}
	else
	{
		printf("玩不了王者荣耀");
	}
	return 0;
}

上述代码的功能输入一个数字,如果大于等于18,那就会打印出可以玩王者荣耀了,其他情况则会打印玩不了玩着荣耀

当有很多种分支的话,我们可以用else if来增加分支选择。

#include
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18&&age>=0)
	{
		printf("好好学习,备战高考!");
	}
	else if (age >= 18 && age < 20)
	{
		printf("为找工作学习技能");
	}
	else if (age >= 20 && age< 23)
	{
		printf("要好好努力准备找工作了");
	}
	else if (age >= 23 && age < 60)
	{
		printf("努力工作,过上幸福生活");
	}
	else
	{
		printf("安享晚年");
	}
	return 0;
}

这样就会有多种分支供选择了,在这里提醒大家为了保险起见,每一个if或者else if、else后最好都跟一个花括号,用来保证代码正确,不用花括号则会出现一些不必要的麻烦,好奇的小伙伴们可以打开vs尝试一下。

不过这样的效率不是很高,接下来有一新的分支语句介绍给大家

switch语句

在C语言中,switch语句用于根据不同的条件执行不同的操作。它是一种更简洁和结构化的替代多个if语句的方式。

语法结构

switch语句的基本语法如下:

switch (expression) {
case constant1:
// 如果expression等于constant1,则执行这里的代码
break;
case constant2:
// 如果expression等于constant2,则执行这里的代码
break;

default:
// 如果expression不等于任何一个常量,则执行这里的代码
break;
}

其中,expression是需要进行比较的表达式,常常是一个整数或字符类型的值。

case后跟着一个常量,用来匹配expression的值。如果expression的值与某个case的常量相等,那么该case后的代码块将会被执行。如果匹配成功后的代码块执行完毕,程序会自动跳出switch语句。

如果expression的值没有与任何一个case的常量匹配,那么将会执行default后的代码块(即默认情况)。default是可选的,可用于处理没有明确匹配的情况。如果没有default,那么如果没有匹配成功的case,程序将跳过整个switch语句。

在每个case的代码块中,可以包含任意数量的语句。在每个case的末尾可以使用break语句来终止该case的执行并跳出switch语句,以防止执行后续case。
switch语句提供了一种清晰和有效的方式来根据某个表达式的值执行不同的操作。它常用于替代多个if-else if语句,使代码更加简洁和易读。

在这里需要提醒大家的是要把case理解为一个切入点,从符合条件的case中开始执行代码,如果忘记加break,那么代码则会走下一个case,直到遇到break跳出分支或者是到switch语句的结束

switch语句代码示例

接下来提出一个问题大家来一起解决一下
C语言之分支和循环语句_第1张图片
那么我们如果用if语句就会有多个else if的使用,效率不是很高,我们就用switch语句给大家展示一下

#include
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
		break;
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期日");
		break;
	default:
		printf("输入错误");
		break;
	}
	return 0;
}

以上呢,便是使用switch语句来编写这样的一个程序,如果我们不小心忘掉了某一个break会怎么样呢。

#include
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
	case 6:
		printf("星期六");
	case 7:
		printf("星期日");
		break;
	default:
		printf("输入错误");
		break;
	}
	return 0;
}

在这次,我们删除了5和6的break;那么当我们运行程序输入5或者6会怎么样呢
C语言之分支和循环语句_第2张图片
C语言之分支和循环语句_第3张图片
没错,没有break的话,程序会继续走switch语句,直到碰到break或者走完switch语句,所以再次提醒大家以后使用switch的时候千万不要忘了break的使用。

多组输入

如果我们想要调用一次程序多输入几个来显示星期几的话只要用 do while循环和switch语句就好了。

#include
int main()
{
	int day = 0;
	do
	{
		scanf("%d", &day);
		switch (day)
		{
		case 1:
			printf("星期一\n");
			break;
		case 2:
			printf("星期二\n");
			break;
		case 3:
			printf("星期三\n");
			break;
		case 4:
			printf("星期四\n");
			break;
		case 5:
			printf("星期五\n");
			break;
		case 6:
			printf("星期六\n");
			break;
		case 7:
			printf("星期日\n");
			break;
		case 0:
			printf("退出程序");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	} while (day);
	return 0;
}

那么运行结果是怎么样的,我们一起来看一下
C语言之分支和循环语句_第4张图片
我们就实现了多组输入,当我们想要结束程序的时候,是需要输入0,会结束循环后执行完剩余的代码,也就退出程序了

接下来给大家稍微分析一下代码的为什么会这样执行,首先switch语句放在do while循环中,while的判断条件是day,那么每次都输入一个数字只要不是0,那么,我们都知道,c语言中0为假,非0为真,也就是因此,才把0设置为退出程序的原因,非0就为真,那么循环就继续执行下去了。

循环语句

在C语言中,循环语句用于重复执行一段代码,直到满足特定条件为止。

while循环

while循环:
while循环在循环次数未知或需要根据特定条件来判断时使用。

语法结构

它的基本语法如下:

while (condition) {
// 循环体,执行这里的代码
}

其中,condition是循环条件,当条件为真时执行循环体,当条件为假时结束循环。在进入循环体之前,会先判断条件是否为真,如果不真,则跳过循环体。

while语句代码示例

接下来我们用while循环打印一下1到100中所有3的倍数,来看一下while是怎样工作的。

#include
int main()
{
	int n = 1;
	while (n <= 100)
	{
		if (n % 3 == 0)
		{
			printf("%d ", n);
		}
		n++;
	}
	return 0;
}

这样便会打印出1到100的所有3的倍数了
在这里插入图片描述
while循环是先判断条件是否成立,在执行while循环中的代码,当条件不成立的时候,跳出循环。

do while循环

do-while循环是一种先执行循环体,再判断条件的循环结构。

语法结构

它的基本语法如下:

do {
// 循环体,执行这里的代码
} while (condition);

其中,condition是循环条件,当条件为真时继续执行循环,当条件为假时结束循环。不同于for循环和while循环,在do-while循环中,循环体至少会被执行一次,因为条件是在循环体执行后判断的。

do while语句代码示例

接下来我们用do while循环打印一下1到100中所有3的倍数,来看一下和while有什么区别。

#include
int main()
{
	int n = 1;
	do 
	{
		if (n % 3 == 0)
		{
			printf("%d ", n);
		}
		n++;
	} while (n <= 100);
	return 0;
}

也同样能够打印出1到100中所有3的倍数,那么它与while循环的区别就在于,它是先执行代码后判断条件是否成立,成立则继续循环,不成立则跳出循环。

在这里插入图片描述

for循环

for循环是在已知循环次数的情况下使用的循环结构。

语法结构

它的基本语法如下:

for (initialization; condition; increment/decrement) {
    // 循环体,执行这里的代码
}

其中,initialization是循环初始化语句,用于设置循环的初始条件;condition是循环条件,当条件为真时执行循环体,当条件为假时结束循环;increment/decrement是递增或递减表达式,每次循环后更新循环变量的值。

for语句代码示例

同样的,我们还是用for循环来打印出1到100中所有3的倍数

#include
int main()
{
	int n = 0;
	for (n = 1; n <= 100; n++)
	{
		if (n % 3 == 0)
		{
			printf("%d ", n);
		}
	}
	return 0;
}

同样也能打印出1到100中所有3的倍数,在这里给大家稍微讲解一下for循环的执行顺序

for(int i =0; i<5;i++){
// 循环体
}
执行顺序解抛
执行的顺序如下:
第一步 : i=0 初始化值
第二步 : i<5 进行条件判断,如果为真,则继续执行
第三步 : 执行循环体的内容
第四步 : i++ 变量i自增
第五步 : 回到第二步,条件判断为真,则执行循环体内容,再到i++一直循环,
直到第二步的判断条件为假,则退出该循环

到此就解释完了for循环的执行顺序

总结

到这里就向大家分享完了,文章都是个人拙见,有不好的地方欢迎大家指出,以后会持续更新,希望能和小伙伴们深入交流一下编程技术。

你可能感兴趣的:(c语言,学习方法)