【C语言之分支与循环语句详解 1】带你拿捏分支语句

目录

一.什么是语句?

二.语句的分类

三.分支语句(选择结构)

1、if语句

2、悬空else

四.swich语句

 break:

default:

总结:


一.什么是语句?

在C语言中,以一个分号结尾的句子就叫做语句。

二.语句的分类

C语言中,将各种语句进行了分类,有如下几种语句:

1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句

下面将着重讲解控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句

可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

三.分支语句(选择结构)

1、if语句

if语句的基本结构如下:

//表达结构:
    if(表达式1) //括号里放能判断真假的表达式或变量
               //真就执行语句1,假就跳过。     
        语句1;
    if(表达式2)
        语句2;
    else
        语句3;

//多分支结构:
//程序会先判断if中条件是否为真,接着是else if,
//如果if和else if都为假,就执行else中的语句

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

ps:(1)C语言中,0为假,非0既是真。

     (2)在二分支或多分支语句中,if、else if或else其中一个为真后,其余语句就不会再执行。

温馨提示:在C语言中,语句的判断是从左向右的,比如当判断一个数是否位于10到20之间时。我们不能写成if(10 < x < 20)。而是要写成if(10 < x && x < 20)。我们可以通过以下程序进行测试:

 我们可以看到,程序运行的结果将awsome打印出来了。我们自己判断if中的条件为假,为什么还是将awsome打印出来了呢?

我们可以简单的分析一下:x = 22,首先判断10 <  22;这个表达式的结果为真,就是1;然后继续判断1 < 20;为真。所以就执行if中的语句。将awsome打印出来。

原来,C语言中不能这样判断一个式子是否符合两个或多个条件。如果要判断的话,需要用 && 或者 || 连接起来。

当我们想要在分支语句中,条件为真后执行多条语句,就可以使用我们的语句块:

#include <stdio.h>
int main()
{

    if(表达式1)
    {
        语句1;
        语句2;
    }
    else
    {
        语句1;
    }
    return 0;
}

这里的if或else下面的一对{ }中的语句就被称为语句块。

2、悬空else

下面我们看一段代码:

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

各位不妨猜猜这行代码的运行结果是什么?是打印 nice 还是 good ?

我们可以看看运行结果:

 结果什么也没有输出。因为这里的else语句并不属于第一个if语句,当我们遇到一个悬空的else语句时,它属于离他最近的那一个不完整的if语句。如果想将它属于第一个if,这里就要把第二个if语句补充完整并加上一个空的else语句,或者用一个{ }将它包围在代码块内。

这里给出修改:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	//第一种
	//if (a == 1)
	//{
	//	if (b == 2)
	//		printf("nice\n");
	//}

	//第二种
	if (a == 1)
		if (b == 2)
			printf("nice\n");
		else
			;
	else
		printf("good\n");
	return 0;
}

四.swich语句

switch语句也是一种分支语句, 常常用于多分支语句。

含有以下关键字:switch   berak   case   default

switch基本格式如下:

switch(整型表达式)
{
    语句项;
}
int main()
{
    int n = 0;
    scanf("%d",&n);
    switch(n)
    {
        case 1:
            //需要执行的语句
            break;
        case 0:
            //需要执行的语句
            break;
        default:
            //若输入的n和前面所有case均不符合
            //就执行此部分
            break;
    }
    return 0;
}

switch语句中

switch(n)中的n必须是整型表达式。

case后必须是整型常量表达式。

case的部分被称为语句项。

 break:

break:switch中每个语句项中都必须含有break,它能帮助我们实现真正的多分支。switch语句在执行的时候,会根据表达式的值从上到下寻找符合条件的case。当找到符合条件的case后,他会执行case中的内容。但是,如果我们不在它的后面添加break的话,程序会继续执行后面的case,直到遇到beak为止。

举个例子:

 虽然我们的代码输入的是0,但是程序在case 0:后面没有遇到break,所以他会继续往下执行,直到遇到break或者switch分支结束。

default:

default:如果表达式的值与所有的case 标签的值都不匹配怎么办?这时候程序会跳过所有的语句。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?可以在语句列表中增加一条default子句。当 switch表达式的值并不匹配所有 case 标签的值时,这个default 子句后面的语句就会执行。

举个栗子:

switch语句中多对一的情况:

在switch语句中,可以多个case标签对应同一个执行语句。如下:

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n)
	{
	case 0:
	case 1:
		printf("bbbbb\n");
		break;
	default:
		printf("ccccc\n");
		break;
	}
	return 0;
}

我们可以运行来看看:

 PS:

1、在switch 语句中,default 子句的位置并不固定,它写在任何一个 case 标签可以出现的位置。

2、当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

3、每个switch语句中只能出现一条default子句。

4、它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

5、switch还可以出现多对一的情况。

6、switch语句可以嵌套使用。

总结:

以上就是C语言中分支部分的知识了,希望可以帮到大家。当然,如果有什么不正确的地方还请各位大佬指正一二。

猜你喜欢

转载自blog.csdn.net/m0_74459723/article/details/127531668