相信大家对c语言中的分支和循环有着或多或少的了解,那么接下来,让我们就这个问题展开探讨和深一步的了解
一、分支语句:
1、if 2、switch
二、循环语句
1、while 2、for 3、do while
一、分支语句
1、if语句
if语句有以下三种结构
if(表达式) if (表达式) if(表达式)
语句 语句1; 语句1;
else else if(表达式)
语句2; 语句2;
注:在上述if语句中,如果要执行语句比较长,这些语句可以用一个大括号括起来,否则编译器只会执行紧挨着的一个语句从而导致出现错误!!!
例1:
2、switch语句
通过学习我们不难发现在情况较多的时候,使用if语句一连串(if.....else if.........else........)难免会显得冗杂一些,此时如果使用switch语句就能大大的简化问题。
结构:
switch(整形变量表达式)
case表达式1:
语句1;
break;
case表达式2:
语句2;
break;
.....................
default表达式3:
语句n;
break;
注:break语句在分支语句中起着举足轻重的作用,如果没有它则会继续执行后面的语句,因此每个case后面必须有break语句。default语句可用于特殊情况或未知情况,可有亦可无。default语句人们习惯性都放在最后一个语句中,如果没有case语句与输入的整形相匹配时,则会执行default语句。在大多数情况default语句可根据自身喜好放在任意位置,不影响代码的运行
由上面这个代码可知当多个case对应的结果都是一样的时候,我们可以对应结果相同的case最后加上需要执行的语句即可。
无论是if语句还是switch语句,当符合运行条件时只会执行一次,而现实中的许多情况我们可能需要逐个筛查或者多次执行,此时我们就需要用到循环语句。
二、循环语句
1、while 2、for 3、do while
1、whlie语句
结构:
while(条件)
{循环语句;
}
在c语言的逻辑中只有真或者假,用0来表示假,用非0来表示真,当while循环中条件判断为真时则会进入循环,若为假则会跳出循环,结束进程。
在循环体中我们常通过一些调整例如++来改变变量来控制输出结果或循环次数
//代码
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n");
return 0;
}
例: #include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
在循环语句中,条件的执行次数总是比循环体的执行次数多一次。因为当逻辑为假是仅仅进行了条件的判断而没有进行循环
2、for语句
for循环的流程图解:
结构:
变量的初始化;
for(表达式1 ; 表达式2 ; 表达式3)
初始化 条件 调整
{
语句;
}
整个循环过程中表达式1只会执行一次,是表达式2和表达式3在不断重复
上述仅仅为一般情况,可根据实际情况改变这几个要素的位置,甚至无一要素在for后的括号中例:for( ; ; ;),for循环后执行的语句必须用大括号括起来否则无法进行循环
代码1:
for循环相较于while循环判断、调整和初始化相对比较集中,有利于代码的维护,从形式上在有较多情况时要更优
3、do while 循环
循环流程:
在实际操作中dowhile循环用的要比for和while要少很多
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;
⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
do
{
执行语句;
}
while(表达式)
例代码1:
⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些
3、Continue语句和Break语句
当遇到某种特殊情况我们需要提前终止循环,这是非常常见的情况;为此我们有break和continue两个关键词,可用于退出循环或者跳过本次循环从下一次循环开始
1、break语句:永久停止循环,只要遇到break这个关键词,就会立即退出循环,并继续往后执行
2、continue语句:跳过本次循环,当编译器遇到continue这个关键词时,就会自动跳过本次循环,执行下一个循环
例1:
例2:
(上述continue使得循环中printf函数打印的次数少了一次)
据此我们可以分析出来continue语句帮助我们跳过了一次循环后的代码,直接来到下一次循环的判断部分,如果我们写的代码中循环的调整部分在continue语句后面的话可能会造成死循环。
4、循环的嵌套
在许多较为复杂的情况,运用一个循环语句往往难以达到预期的效果,这是我们就可以通过循环的嵌套来实现
例题:打印出100~200之间的所有素数
5、goto语句
在c语言中有一个特殊的语句叫做goto语句,可以使代码跳转到先前的某个步骤,从而实现在同一个函数内跳转到设置好的标号处
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next:
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
goto ?语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建
议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出
使⽤ goto 就⾮常的⽅便了。
for(...)
{
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
}
error:
一个break语句只能跳出一个循环,而goto可以直接跳出所有循环,此时使用goto就会非常便利。