C语言分支和循环

目录

一、分支(选择)结构

1、关系、逻辑操作符

2、if语句

3、条件操作符

4、switch语句

二、循环结构

1、while循环

2、for循环

3、while循环与for循环的对比

4、do-while循环

5、break和continue语句

6、goto语句


       C语言中的分支和循环是程序流程控制的重要部分,它们允许程序根据条件执行不同的代码块,或在特定条件下重复执行代码。

一、分支(选择)结构

       分支结构又称选择结构,是程序设计中常见的控制流程之一。它可以根据某些条件判断是否执行某个代码块,或者从多个分支中选择执行某个分支。在C语言中,分支结构主要有if和switch两种结构。

1、关系、逻辑操作符

(1)、关系操作符

       C语言用于比较的表达式成为“关系表达式”,里面用于比较的运算符称为“关系运算符”。主要有以下6个:

        >  (大于)

        <  (小于)

        >=  (大于等于)

        <=  (小于等于)

        ==  (相等)

        !=     (不相等)

       当关系表达式成立时返回“0”,不成立时返回“1”,示例如下图。

注意:关系运算符尽量不要连用,例如:i < j < k 。如果连用,则编译器运算顺序为(i < j)<k,即先判断 i 是否小于 j ,如果 i 小于 j 成立则返回1,再将1和 k 比较。

(2)、逻辑操作符

       逻辑操作符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。

        ! :逻辑取反运算符(改变单个表达式的真假)。

        &&:逻辑与运算符,就是并且的意思(两侧的表达式都为真时,则为真,都则为假)。

        ||   :逻辑或运算符,就是或者的意思(两侧只要有1个表达式为真,则为真,否则为假)。

注意:C语言逻辑操作符还有一个特点,它的执行顺序是从左到右,总是先对左侧的表达式求值,再对右边的表达式求值,如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”

       对于逻辑与来讲,从左到右只要出现假,则表达式停止判断,整个表达式即为假(例如:(2<1)&&(2<3),因为2<1已经为假,就不会再判断2<3是真还是假,即把2<3这个表达式短路了,直接返回假)。

       对于逻辑或来讲从左到右只要出现真,则表达式停止判断,整个表达式即为真。(例如:(1<2)| |(2>3),因为1<2已经为真,就不会再判断2>3是真还是假,即把2>3这个表达式短路了,直接返回真)。

2、if语句

(1)、if

       if 语句的语法形式如下:

if ( 表达式 )
    语句

       当 if 后面的表达式为真时,执行 if 下面的语句,否则不执行。当 if 后面要执行多条语句时,用{ } 将要执行的代码块包括起来即可。if 语句的执行流程如下图:

(2)、else if 与 else

       当有多条语句需要判断时可以将 if 与 else if 或 else 连用,用法如下:

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

       其中,else if 语句和 else 分别都可以省略。

注意:1、如果有多个 if 和 else , else 总是跟最接近的 if 匹配,和缩进无关。

           2、如果一系列连用的 if else 语句中有一条语句被执行,则这一系列 if else 语句将不再往下进行。例如:以上的代码块,如果表达式1为假,则往下判断表达式2,如果表达式2为真,则执行语句2,执行完语句2之后将直接结束这一系列 if else 语句,不再判断表达式3以及往后的表达式。

案例:输入一个整数,判断是奇数还是偶数。

3、条件操作符

       条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:

exp1 ? exp2 : exp3

       条件操作符相当于以下 if else 语句:

if (exp1)
    exp2;
else
    exp3;

       示例如下,可见 n 和 m 输出结果相同,即条件操作符作用和以上 if else 语句相同。  

4、switch语句

       除了if 语句外,C语言还提供了 switch 语句来实现分支结构。switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。

switch (expression) 
{
    case value1: 语句1;
        break;
    case value2: 语句2;
        break;
    default: 默认语句
        break;
}

        当 switch 中某个 case 后面的 value 值与 expression 的值相等时,则执行相应的case后面的语句,如果任何一个 value 值都不等于 expression 则执行 default 后面的默认语句。

注意:1、case 和后边的数字之间必须有空格。

           2、每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个 switch 语句。否则将继续向下执行,直到遇到 break 或者整个 switch 中的代码块执行完为止。

           3、switch 中的 case 语句和 default 语句放置顺序没有要求,可以按任意顺序摆放。

案例1:输入一个1~7的数字,打印对应的星期几。

案例2:输入一个1~7的数字,打印工作日(1~5)或者休息日(6、7)。

灵活运用 switch 语句在 case 中只有遇到 break 语句 switch才会停止的性质。

二、循环结构

       C语言中的循环结构是一种重要的程序控制结构,它允许程序重复执行一段特定的代码,直到满足某个结束条件为止。循环结构在处理重复任务,如迭代计算、数据搜索、打印输出等方面非常有用。C语言提供了三种类型的循环结构:while循环、for循环和do-while循环。

1、while循环

       while的语法形势如下,它和 if 的语法形式相同。 while 的表达式只要成立,while的代码块就会一直执行,直到 while 中的表达式不成立时,循环停止。

while ( 表达式 )
{
    语句;
}

       while 语句的执行流程如下图: 

案例: 用whlie循环打印1~20中的偶数值。

2、for循环

       for循环的语法形式如下,三个表达式的作用分别如下:

        表达式1:用于循环变量的初始化。
        表达式2:用于循环结束条件的判断。
        表达式3:用于循环变量的调整。

for(表达式1; 表达式2; 表达式3)
{    
    语句;
}

       for 循环语句的执行流程如下图: 

注意: 1、for语句中三个表达式的分隔符是分号“;”。

            2、for语句中三个表达时均可省略,但分号不能省略。例如省略表达式1、3可写为:

for ( ; 表达式2 ; )
{
    语句;
}

 案例:用for循环打印1~20中的偶数值。

3、while循环与for循环的对比

       for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部
分非常集中,便于代码的维护,而如果代码较多的时候while 循环的三个部分就比较分散,所以从形式上for 循环要更优一些。

4、do-while循环

       while 和for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;而 do while 循环则是先直接进入循环体,执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

       do-while循环的语法形式如下:

do
    语句;
while(表达式);

       do-while循环语句的执行流程如下图: 

注意:do-while循环语句至少执行1次,其余用法和while相同。

5、break和continue语句

(1)、break

       break 除了在switch中的应用之外,还可以用来跳出循环。在循环中,执行到break语句时,跳出循环。示例如下:

(2)、continue

       continue 语句的作用是,结束本轮循环,直接进行下一轮循环。示例如下,在 i = 5 时,结束本轮循环,直接进行下一轮循环,结果只是没有打印数字 5 。

注意:continue 在 while 循环和 for 循环中有些许区别,在没有continue语句时,上述代码和如下代码都应该打印1~10,在加入continue语句后,for循环只是没有打印数字 5 ,而 while 循环在打印完 4 之后陷入了死循环。由此可知 for 循环的调整部分在每结束1次循环之后都会执行。

6、goto语句

       在C语言中,goto语句是一种无条件控制转移语句,允许程序直接跳转到指定的标签位置。它通常用于跳出多重循环、跳过某些语句或错误处理等场景。goto语句的基本语法如下:

goto label;  
...  
label:  

用法示例:goto语句直接从三层 for 循环的最内层跳出到最外层。

for (...)
{
	for (...)
	{
		for (...)
		{
			if (disaster)
				goto lable;
		}
	}
}
lable;

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值