C语言的分支与循环

本文详细介绍了C语言中的分支语句(if和switch)、循环语句(for、while和do-while),以及循环跳出语句(break、continue和goto)。作者以初学者的角度阐述了各种语句的特点和使用场景,强调了循环嵌套的概念。
摘要由CSDN通过智能技术生成

目录

什么是语句?

分支语句

if语句

switch语句

总结1

循环语句

for型循环

while型循环

do{...}while型循环

总结2

循环跳出语句

break

continue

goto

总结3

循环和分支的嵌套

写在最后


什么是语句?

C语言的语句可以分为以下五类:

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

本篇文章要说的分支与循环就是控制语句(控制它是否被执行)。

分支语句

分支语句主要有if语句switch语句两种。

if语句

if语句有单分支和多分支两种

单分支的格式为

//如果判断条件为真,则执行if里的语句,否则执行else里的语句
if(判断条件){
    执行语句;
}
else{
    执行语句;
}

这里需要注意的是0为假,非0为真,而布尔型数据的truefalse的值为1和0,有时容易将比较两者大小是否相等的"=="判断写成”=“赋值语句返回值为非0也会被计算机识别为真。

多分支的格式为

//表达式会依次判断if和else if语句的判断条件是否为真,如果为真则执行,然后跳出条件判断,否则向下判断
if(判断条件){
    执行语句;
}
else if (第二个判断条件){
    执行语句;
}
else if (第三个判断条件){
    执行语句;
}
else if...
else{
    执行语句;
}

这里由上面的代码不难看出,当有一个判断表达式为真就停止判断,否则就一直判断,

所以当执行到下一条判断条件的时候,上面的判断必然为假,所以后面的判断可以减去一些不必要的条件,来增加的代码的美观性。需要注意的是单分支if语句如果不加else if 的话。即使前面的表达式为真,也依然会向下执行。

switch语句

switch的结构为

//根据整型变量所存放的数据来判断执行哪段分支,与哪段case 值对应(case 后面的值可以任意设置),
//如果没有对应的值就执行default 里的语句
switch(整型数据变量){
    case 1: 语句1; break;
    case 2: 语句2; break;
    case 3: 语句3; break;
    ...
    default: 语句n; break; 
}

需要注意case 后面的语句必须要加break跳出,否则就会依次向下执行,就不会达到分支的目的(我总容易犯这个错误),default 后面的语句如果最后一条的话可以选择不加,毕竟已经是最后一条语句了,但为了代码的美观性,还是觉得加上比较好

switch内的整型数据变量可以使用short, int, long, long long,char(可以通过ASCII码表转化为整型)

如果使用其他变量则会发生编译失败。

如果多行case 的值,执行的是相同的语句,可以这么写

case 1:
case 2:
case 3:
case 4: 语句体; break;

因为前面不加break语句的话会一直向下执行。

总结1

可以看出if语句适合判断条件为真与假的,分支相对比较少的判断,而switch语句适合分支较多,且可以用整型变量进行判断的分支。

循环语句

循环分为三种 for型循环,while型循环,do{...}while型循环。

for型循环

for型循环的主要格式如下

//下面代码表示的是以i为计数变量,i每次自增一个单位,一共自增n次(从0开始),每自增一次执行一次代码块,所以循环n次
for(int i=0;i<n;i++){
    语句体;
}

其中for循环括号内的三段语句分别是初始化计数变量,判断循环执行条件,计数变量自增语句,当然这些语句是可以放在其他位置的,但是括号中的分号不可省略,如果不加循环执行条件,代表死循环,这种情况下一般都是无意义的。

while型循环

//如果执行条件为真,则执行循环,否则跳出循环
while(执行条件){
   语句体;
}

这种格式跟if语句体有些类似,只不过它是循环,如果条件为真就一直执行,直到条件为假才跳出。

do{...}while型循环

//如果执行条件为真,则继续循环,否则跳出循环
do{
   语句体; 
}while(执行条件);

跟上一种循环不一样的是

while型循环是先判断执行条件是否为真,而do{...}while型循环是先执行语句体,然后再判断执行条件是否为真。

总结2

以上,我们不难发现for循环适用于已知循环次数的循环,而while循环适用于已知条件但不知道次数的循环,do{...}while适用于先执行循环语句,然后再判断执行条件的循环。

循环跳出语句

当然也可以说为循环跳出的关键字,差别不大。

breakcontinue,goto三种。

break

break有破坏的意思,在C语言中表示永久跳出循环的意思,参考下面的代码。

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

以上代码代表的意思是循环从0开始向上自增,当i的值为5的时候跳出循环,且是永久跳出,循环不会继续执行。所以输出的结果为01234。

break语句在上面说switch的时候见过,其实swtich我觉得本质上是一种循环,每段case 语句加上break才保证的多分支。

continue

continue有继续意思,在C语言中有跳出本次循环并执行下次循环的意思。

参考下面的代码

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

以上代码代表的意思是循环从0开始向上自增,当i的值为5的时候,跳出本次循环并执行下次循环

所以只有5不打印,输出结果为012346789。

continue可以用于switch中吗?

其实也是可以的,continue语句是跳出本次循环执行下次循环,这也意味着需要在进行一次switch判断,可以根据需该变量的值再判断一次,但是不建议容易乱,还是保持这switch那种条理清晰地分支便好。

goto

goto语句意思是去的意思,就是跳转到代码的某一行

如下:

int main(){
   for(int i=0;i<10;i++){
      for(int j=0;j<10;j++){
          if(i==5&&j==5) goto a;
      }
   }
a: return 0;
}

此代码也是循环从0开始执行,当j的值等于5时会直接跳转到 return  0的那行,(以a定义某一行,然后goto a;)。goto的好处是:相比break,continue,如果有多层嵌套循环的话可以省去多次break,直接goto达到全部跳出的目的,但是这种语句不建议使用,因为goto指令的级别较高,危险程度较高,盲目使用会导致很多难以预测的问题。

总结3

break语句是永久跳出循环,continue语句是跳出本次循环并执行下次循环,而goto语句是直接跳转到代码的某一行上,个人不建议使用,可能会触发一些bug。

循环和分支的嵌套

就是把循环和分支放在代码块里再执行一遍,往下推即可(写不动了)。

写在最后

本人是一个刚入门的菜鸟程序员,这篇文章只是我对所学知识的一点理解,如果有错误,还望各位大佬指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值