c语言·分支和循环语句(详细介绍和全面总结)

前言:在生活中我们常常会遇到一个问题会有多个选项,让我们去自主选择,然而在c语言中同样也有,为了更好的学习c语言体系,让我们一起探索c语言中的分支循环语句

目录

一、什么是语句

        1.语句的定义

        2.语句的分类

二、分支语句

        1、if语句

        2、switch语句

三、循环语句

        1、while循环

                1.1、while循环中的break

                1.2、while循环中的continue

        2、for循环

                2.1、for循环中的变种

                2.2、for循环与while循环的区别

        3、do........while () 循环


一、什么是语句

1、语句的定义

在c语言中,语句是用于执行操作的代码单元。

语句是以分号(;)为结尾,这是C语言中语句的标志;语句可以简单,也可以复杂,它们可以执行各种操作,如计算、赋值、函数调用、条件执行、循环等。

2、语句的分类
c语言的语句可以分为五类分别是:
*表达式语句*

由表达式加上分号组成,例如:a+b=c;是一个赋值语句,用于将 b+c 的结果赋值给 a;

*函数调用语句*

用于调用函数并执行它的代码,例如:printf ( " Hello,World! " ); 引用了标准输入输出的库函数<stdio.h> 调用了标准准库中的prinft函数来输出文本到控制台;

*控制语句*

用于控制程序的执行流程;包括条件语句(如 if 和 switch)和循环语句(如 for、while 和 do while)

*复合语句*

在花括号{ }中包含了一个或多个语句的集合;

*空语句*

只有一个分号的语句,不执行任何操作,通常用于占位符或者满足语法要求;

int main()
{
    ;
    retuen 0;
}

二、分支语句 

分支语句又叫条件判断语句,是一种选择结构,包括 if 语句和 switch 语句;

1、*if语句*

if语句:用于基于条件执行代码块

语法结构:

if(表达式)

 语句;

int main()
{
    if(condition)
    {
    //如果条件为真则执行里面的代码
    }
    return 0;
}

if 语句还可以与 else 语句结合使用,用于在条件为 假(0为假,非0即为真) 时执行另一段代码:   

if(表达式)    

    语句1;

else  

    语句2;

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

if 多分支,语句可以嵌套,以便更复杂的条件检查:

if(表达式1)    

   语句1;

else if(表达式2)    

   语句2;

else    

   语句3;

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

代码演示:

输入的年龄若小于18,则输出“未成年”并换行;

#include <stdio.h>
//代码1
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
    {
        printf("未成年\n");
    }
}

输入的年龄若小于18,则输出“未成年”并换行,若大于18则输出“成年”并换行

int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
     {
        printf("未成年\n");
     }
    else
     {
        printf("成年\n");
     }
}

输入的年龄若小于18,则输出“未成年”并换行,若输入的年龄大于等于18且小于30则输出“青年”

年龄要是大于等于30且小于50则输出“中年”

年龄要是大于等于50且小于80则输出“老年”

其他的年龄都输出“老寿星”

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(age<18)
     {
        printf("少年\n");
     }
    else if(age>=18 && age<30)
     {
        printf("青年\n");
     }
    else if(age>=30 && age<50)
     {
        printf("中年\n");
     }
    else if(age>=50 && age<80)
     {
        printf("老年\n");
     }
    else
     {
        printf("老寿星\n");
     }
    
}
注意:else的匹配是和离他最近的if去匹配的 

 2、*switch语句*

在C语言中,switch 语句提供了一种根据不同条件执行不同代码块的方法,它是一种多分支选择结构,适用于一个变量或表达式有多种可能的值(比如5、6、7或以上个值)时进行决策。、

switch 语句的语法如下:

switch (expression) 
{
    case constant1:
    // 如果expression等于constant1,则执行这里的代码
        break;
    case constant2:
    // 如果expression等于constant2,则执行这里的代码
        break;
    // 可以有任意数量的case
    default:
    // 如果expression与所有constant都不匹配,则执行这里的代码
        break;
}

  其中 expression 通常是一个变量或整型表达式,constant1、2是整型常量表达式,每个 case 后跟一个常量值(如整数常量或字符常量),如果 expression 的值与某个 case 后的常量值相等,则执行该 case 后的代码块,直到遇到 break 语句跳出switch语句为止。如果没有任何 case 常量与 expression 的值匹配,且提供了 default ,则执行 default 后的代码块,并结束语句

  break 语句是用来跳出 switch 语句的,防止执行其他 case 的代码块。如果忘记在每个 case 的代码块末尾添加 break 语句,程序将继续往下执行 case 的代码块,直到遇到 break 为止,所以在使用时需格外注意。 

以下演示了根据一周的不同天数打印不同的消息:

#include <stdio.h>
 
int main() {
    int day = 4; // 假设今天是星期四
    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;
        default:
            printf("无效的天数值\n");
            break;
    }
    return 0;
}

switch 语句检查变量 day 的值,并根据其值执行相应的 case 分支。由于 day 的值为4,程序将打印“今天是星期四”。如果 day 的值不在1到7之间,程序将执行 default 标签后的代码块。 

三、循环语句 

上面我们介绍的if语句,当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。

但是在我们生活中有很多实例比如:同一件事情我们需要完成很多次。 那我们怎么做呢?

在C语言中,while 循环是一种基本的循环结构,它允许你重复执行一段代码,直到你限定的条件不再满足。while 循环在循环开始之前检查条件,因此在它条件不满足时完全不执行循环体中的代码,如果初始条件就不满足。while 循环的语法如下:   

while (condition) 
{
    // 循环体:只要condition为真,就会重复执行的代码块
}

condition 是一个表达式,每次循环开始前都会对其进行判断。如果 condition 的值为真,则执行循环体内的代码块。执行完循环体内的代码后,程序会回到 while 语句处,再次检查 condition 的值,若为真则再次执行循环体中的代码,这个过程会一直重复,直到 condition 的值为假,此时循环终止,程序会继续执行循环之后的下一条语句。  

看个例题:

题目是计算1到5的和

//计算1到5的和:
 
#include <stdio.h>
 
int main() 
{
    int i = 1; // 初始化变量i
    int sum = 0; // 初始化总和变量
    while (i <= 5) 
     { 
        // 当i小于或等于5时循环
        sum += i; // 将i加到总和
        i++; // 递增i
     }
    printf("1到5的和是: %d\n", sum); // 输出结果
    return 0;
}

 初始条件满足,循环开始执行。循环体中的代码将 i 加到 sum 上,并将 i 递增。每次循环结束后,都会再次检查 i 是否小于或等于5。当 i 的值递增至6时,条件不再满足,循环终止。

1.1、while 循环中的 break  
#include <stdio.h>
int main()
{
 int i = 1;
 while(i<10)
 {
  if(i == 5)
  break;
  printf("%d ", i);
  i = i+1;
 }
 return 0;
}

我们看见输出结果是1234,说明循环只输出了四次,到第五次结束循环; 

先进入函数,初始化i=1,进入while循环判断是否为真,进入while循环中的if语句判断i是否等于5,不等于5则输出然后i=i+1上去再次进入while中判断,直到if语句中判断等于5则跳出语句 

总结:break在while循环中的作用: 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

1.2、while 循环中的continue 

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

可以看到,i 进循环之后,i 不断增加,当 i 等于5时,进行了一次 continue,之后输出就没有 i 等于5的值,但之后仍然进入循环,持续输出直到满足 while 的条件为止,循环结束;

总结:

continue在while循环中的作用就是: continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。 

 2、for循环

语法: for(表达式1; 表达式2; 表达式3)

                      循环语句;

表达式1为初始化部分,用于初始化循环变量的;

表达式2为条件判断部分,用于判断循环时候终止;

表达式3为调整部分,用于循环条件的调整。 

//使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h>
 
int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
 for(i=1; i<=10; i++)
 {
   printf("%d ", i);
 }
 return 0;
}

在for循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的,注意遇到 continue ,会跳过 continue 后面的代码,直接去循环的调整部分。 

2.1、for循环的变种
int main()
{
    for (;;)
    {
        printf("hehe\n");
    }
 
    return 0;
}

此代码for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议我们刚开始学习的时侯省略,很容易导致问题,比如上述代码判断部分恒为真,最后输出无数次hehe,且不会停止,会一直循环。 

下面的代码是for循环的双层嵌套 外层 for 循环控制变量 i ,内层循环控制变量 j,会输出10*10=100个hehe

int main()
{
    //代码3
    int i = 0;
    int j = 0;
    //如果省略掉初始化部分,这里打印多少个hehe?
 
    for (; i < 10; i++)
    {
        for (; j < 10; j++)
        {
            printf("hehe\n");
        }
    }
 
    return 0;
}

此代码最后只打印出10个hehe,这是因为 i 和 j 都省略了初始化部分,尤其是 j 省略了 j=0,这会导致第一次外循环进来的时候,j 的内循环已经循环了三次,j 已经变成10了,当 i 再次增加的时候内循环就进不去了,所以只输出了10个。 

2.2、for循环和while循环的区别

*执行条件的判断方式不同

while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。

for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。

*使用的目的不同

for循环的目的是为了限制循环体的执行次数,使结果更精确。

while循环的目的是为了反复执行语句或代码块。

*语法不同

for循环的语法为:for (变量 = 开始值;变量 <= 结束值;变量 = 变量 + 步进值) {需执行的代码 }。

while循环的语法为:while (<条件>) {需执行的代码 }。

3、do......while ( ) 循环

语法: 

do

循环语句;

while(表达式);

注:do while循环至少执行一次,使用的场景有限,所以不是经常使用

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

从上面的输出结果来看,do.....while()语句先是进行了一次输出,再到下面的while()里面去判断,这里的i=10不小于10所以结果为假,结束语句

在do while() 循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值