C语言分支和循环详细讲解

2025博客之星年度评选已开启 10w+人浏览 454人参与

前言

今天讲一下分支和循环的内容
C语言是结构化语言,这里的结构有3种结构是顺序结构,循环结构,分支结构
用if 、Switch实现分支结构用for、while、do while实现循环结构
3步让你看懂分支语句和循环语句
制作不易,请点个关注


一、if语句

语法形式:

if(表达式)
{
     语句体;
}
else if(表达式)
{
     语句体; 
}
else
{
    语句体;
}
上述形式是最复杂的形式,else if可以有多个。
语句体:当为一个语句时,例如一个printf语句,中括号可以省略不写。
表达式:先计算表达式为真(非0)还是假(0)为假时不执行该语句就执行else语句。
最简单的是只有一个if语句。其次是if  else语句,当if表达式为假时就执行else语句。
下面是一道if语句的题目:
#include <stdio.h>
2 int main()
3 {
4   int a = 0;
5   int b = 2;
6    if(a == 1)
7       if(b == 2)
8         printf("hehe\n");
9    else
10   printf("haha\n");
11   return 0;
12 }
上述代码中什么都不打印,因为else总是与最近的if匹配。
那个else语句与if(b == 2)匹配,因为不等于1所以不执行if(b == 2)语句,直接执行return 0.

二、逻辑运算符

取反运算符(!)
例:当a为真时 (!a)为假
逻辑且运算符(&&)
例:a&&b都为真时才为真,只要有假就为假
逻辑或操作符(||)
例:a||b只要有一个是真就为真,全为假才为假。
!!当并且(&&)与或(||)第一个操作数能反映整体的结果时,后面的表达式则不计算。
例:int a =1 ;int b =0;
if(b&&a)因为b为0,所以这个表达式为假,不计算后面那个a.
if(a||b)因为a为真,所以表达式为真,就算后面那个b为假也行,因为前面为真后面那个不参与计算。

三、关系运算符

大于(>) a>b
小于(<) a <b
大于等于(>=)
小于等于(<=) a <=b
相等(==)
不等于(!=) a != b
!!!注意:这里的相等是和赋值不一样,赋值是=。
表达式为真则返回1,为假时则返回0.
多个关系运算符不适合连续用
例:if(a<b<c)//这种是错误的。
因为先计算a<b,结果为0或1,再由0或1和c比较
if(a<b&&b<c)//应该采用这种写法

四、条件操作符

exp1?exp2:exp3
其中的exp1,exp2,exp3是表达式。先执行exp1如果为真则计算exp2的值,为假就计算exp3的值。

五、Switch语句

语法形式

switch(表达式)//表达式结果必须是整数
{
    case (整形常量表达式):    
       语句体:
    case (整形常量表达式):
       语句体:
    default :
       语句体;        
}
上面的case语句都不执行才执行default语句和if语句类似。
Switch中的case语句和default语句没有顺序要求,可以把default语句放第一个

Switc语句中的break

break的意思是跳出循环;

#include <stdio.h>

int main()
{
   int day = 0;
   scanf("%d", &day);
   switch(day)
   {
       case 1:
       case 2:
       case 3:
       case 4:
       case 5:
           printf("工作日\n");
           break;
       case 6:
       case 7:
           printf("休息日\n");
           break;
       default:
           printf("输入错误\n");
   }
   return 0;
}
上述代码在输入1 时,因为1里面没有break语句一直往下执行到5才跳出循环,输入5时打印后·直接跳出
所以在写代码时要注意break的运用,break的运用才能实现Switch的分支效果。

六、while循环

语法形式:
while(表达式)
{
语句体;
}
如果表达式里面的内容一直为真(非0),则无限循环。

七、for循环

语法形式:
for(表达式1:表达式2:表达式3)
表达式1:初始化语句
表达式2:判断语句
表达式3:变量调整语句
{
语句体;
}
首先执行1,然后执行2,如果结果为0循环就结束。结果为真就执行语句体,然后执行3,接着在执行2,为真就执行语句体,一直循环,直到执行2为假跳出循环。

while和for的对比

里插入图片描述
在这里插入图片描述

八、do while循环

语法形式:
do
{
语句体;
}while(表达式);
与while的唯一区别就是do while先执行一次再判断。而while是先判断。

九、break语句和continue语句

之前说过break语句是跳出循环的意思。
break还能在while循环和for循环 以及do while循环中使用
continue是跳过这一次循环开始下一次循环。
continue在while循环和for循环 以及do while循环中使用(不能在Switch中使用)。

十、goto语句

语句形式:
goto 语句体;

#include <stdio.h>

int main()
{
    printf("hehe\n");
    goto ABC;
    printf("haha\n");
    
  ABC:
    printf("跳过了haha的打印\n");
    return 0;
}
 goto语句是直接跳到这个ABC的位置,如果像for循环中有多个嵌套就需要多个break语句才能跳出
 而只需要一个goto语句就行了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值