C语言的分支与循环

一、if语句

1. if语句的语法形式

if(判断条件)

{

        语句;

}

当表达式为真(1),语句执行,表达式为假(0),语句不执行。

  举例:

//输入一个整数,判断该整数是否为偶数。
#include<stdio.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    if(n%2==0)
        printf("%d为偶数",n);
    return 0;
}

2.if...else...语句的语法形式

if(判断条件)

{

        语句1;

}

else

{

        语句2;

}

表达意思为:如果判断条件满足,执行语句1,否则,执行语句2。

举例:

//输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。
#include<stdio.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    if(n%2==0)
        printf("%d为偶数\n",n);
    else
        printf("%d为奇数\n",n);
    return 0;
}

3.嵌套if,构成if else

   if...else...语句只能判断两种可能性,例如:年龄大于18岁表示成年,小于18岁表示未成年。

   但是,当判断多种可能性,if...else...语句无法实现,这时候可以使用if进行嵌套。

举例:

//输入一个整数,判断该整数是否大于10
#include<stdio.h>

int main()
{
    int input;
    scanf("%d",&input);
    if(input<10)
        printf("%d小于10\n",input);
    else if(input==10)
        printf("%d等于10\n",input);
    else
        printf("%d小于10\n",input);
    return 0;
}

4.悬空else

   如果有多个if和else,我们应记住else总是与最近的if匹配。

举例:

#include<stdio.h>

int main()
{
    int a=0,b=5;
    if(a==1)
        if(b==5)
            printf("Hellow World!\n");
    else
        printf("error\n");
    return 0;
}
//这段代码运行结果为空,因为a初始化为0,语句判断条件为a等于1时执行语句,
//根据我们所说的else总与最近的if相匹配,可知a不等于1,接下来的语句不会进行判断,输出结果为空。

//换一种书写方式会更加清晰
#include<stdio.h>

int main()
{
    int a=0,b=5;
    if(a==1)
    {
        if(b==5)
            printf("Hellow World!\n");
        else
            printf("error\n");
    }
    return 0;
}

二、switch语句

1.switch语句语法形式

switch(expression)

{

case value1:

        statement;

        break;

case value2:

        statement;

        break;

...

default:

        statement;

        break;

}

switch语句用来判断有多个结果的情况,可以说是另一种形式的if...else...语句。

2.switch语句的break

在switch语句中break的作用很关键,体现了分支的效果,但是,不是每一个case都要有break。

举例:

#include<stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除,余数为0\n");
	case 1:
		printf("余数是1\n");
	case 2:
		printf("余数是2\n");
	}
	return 0;
}

正常这段代码运行应执行case 0,结果为“整除,余数为0”,但是结果为什么所有case都执行了一遍。这就是因为case语句后面没有break,在switch语句中,只有break才能跳出switch语句。

举例:

//输入数字1-7,打印出对应的星期
#include<stdio.h>

int main()
{
	int n = 0;
	scanf_s("%d", &n);
	switch (n)
	{
	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;
	}
	return 0;
}

3.switch语句的default

在使用switch语句,我们可能会遇到一种情况,就是我们switch后的表达式的值无法与case语句匹配的时候,我们可以引入default语句。

举例:

刚才打印星期的时候假如我们没有输入1-7内的数字,我们可以引用default,打印输入错误。

#include<stdio.h>

int main()
{
	int n = 0;
	scanf_s("%d", &n);
	switch (n)
	{
	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;
	default:
		printf("输入错误\n");
		break;
	}
	return 0;
}

4.switch语句中case和default的顺序问题

在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。

三、while循环

1.while语句的语法形式

while(表达式)

{

        语句;

}

while语句和if语句很相似,他们的区别在于,if语句表示判断,while语句可以实现循环。

2.while循环的实践

//在屏幕上打印 1~10 的值
#include<stdio.h>

int main()
{
	int i = 1;
	while (i<=10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

四、for循环

1.for循环的语法形式

for(表达式1 ; 表达式2 ; 表达式3)

{

        语句;

}

表达式1:循环变量的初始化

表达式2:循环条件的判断

表达式3:循环变量的调整

2.for循环的执行流程

首先,执行循环变量的初始化,然后进行循环条件的判断,非0时执行循环语句,循环语句执行完后,执行表达式3,对循环变量进行调整,然后在执行循环条件的判断。循环条件判断为0时,循环结束。

3.for循环的实践

//在屏幕上打印 1~10 的值
#include<stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

五、do while循环

1.do while循环的语法形式

do

{

        语句;

}while(表达式)

2.do while的执行流程

do while循环语句是先进入循环体,执行循环语句,执行完成后执行while后的表达式,表达式为真就会进行下一次循环,表达式为假,则不再进行循环。

注意:do while特殊的地方是无论是否满足条件都会先执行一遍循环体。

3.do while循环的实践

//在屏幕上打印1~10的值
#include<stdio.h>

int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i += 1;
	} while (i <= 10);
	return 0;
}

六、break和continue语句

1.while循环中的break语句和continue语句

break举例:
#include <stdio.h>

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

注释:break表示,当 i 等于5时,就执行break,循环终止。

continue举例:
#include <stdio.h>

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

注释:这里将break换成continue,continue表示当 i 等于5是,执行continue,跳过了之后的代码,进入到循环判断条件。因为这里跳过了i=i+1,导致程序陷入死循环。

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;
}

for循环的break和while循环的break一样,都是执行到break就跳出循环,循环终止。

continue举例:
#include <stdio.h>

int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

注释:for循环的continue是跳过continue后的代码,直接到调整变量地方(表达式3)。

3.do while循环中的break语句和continue语句

break举例:
continue举例:

注:do while 语句中的 break 和 continue 的作⽤和 while 循环中⼏乎⼀模⼀样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值