详解|分支和循环

       

目录

1.if语句

    1.1 if语句:

    1.2 else语句:

    1.3 分支中包含多条语句

    1.4 嵌套if

    1.5 悬空else问题

2.switch语句

3.关系操作符

4.逻辑操作符

    4.1 逻辑取反运算符 !:

   4.2 与运算符 &&:

    4.3 或运算符 ||:

   4.4 短路: 

5.while循环

6.do-while循环

7.for循环

8.循环的嵌套

9.break和continue语句

    9.1break

    9.2 continue

10.goto语句


        在日常生活中,我们可以把一些事务抽象成三种结构,即“顺序结构”,“分支结构”,“循环结构”。在C语言中就有这三种结构,其中用 "if" "else"来实现分支,“while” ,“for”,"do-while"来实现循环。在本文将详解分支和循环,以及"break","continue","goto"在其中的应用。

1.if语句

    1.1 if语句:

if(表达式)
{
    语句;
}

        在 if语句中,若表达式的结果为真,则执行if后面的语句。若表达式为假,则跳过if后面的那条语句开始执行。

        注:在C语言中,0为假,非0为真。

                   例如:1,7,-1都是真。  

    1.2 else语句:

if(表达式)
{
    语句;
}
else 
{
    语句
}

        在"if - else"语句中,当if后面的表达式为假时,则跳过if后面的语句,开始执行else后面的语句。

    1.3 分支中包含多条语句

if(表达式)
    语句1;
语句2;

        默认情况下,if 和 else 语句只控制一条语句。入上述例子中,当表达式为真时,执行两条语句。反之只执行语句2。如果我们想要表达式为真时,执行多条语句,那我们就在if后面加上" {} ",

如下例:

if(表达式)
{
    语句1;
    语句2;
    ......
}
else
    语句;

    1.4 嵌套if

if(表达式)
{
    if(表达式)
        语句;
    else
        语句;
}
else
    语句;


        if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。如我们输入一个数,它是不是正整数,如果是那么是奇数,还是偶数。

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num>0)
 {
     if(num%2 == 0)
         printf("偶数\n");
     else
         printf("奇数\n");
 }
 else
 {
     printf("输⼊的值是负数\n");
 }
 return 0;
}

    1.5 悬空else问题

if(表达式)
    if(表达式)
        语句;
else
    语句

        在C语言中,else总是与它最靠近的if匹配。注意不是按照对齐!

#include <stdio.h>
int main()
 {
     int a = 0;
     int b = 2;
     if(a == 1)
       if(b == 2)
            printf("hehe\n");
     else
       printf("haha\n");
     return 0;
 }

        上述例子中,else会和第二个if相匹配,如果我们想要和第一个if匹配,那么我们就要加上" {} "

#include <stdio.h>
int main()
 {
     int a = 0;
     int b = 2;
     if(a == 1)
      { 
        if(b == 2)
            printf("hehe\n");
      }
     else
       printf("haha\n");
     return 0;
 }

2.switch语句

switch(整形表达式)
{
    case 整形常量表达式: //case 1
            语句;
    case 整形常量表达式: //case 2
            语句;
    ......
    default:
        语句;
}

        我们可以简单的理解为case就是switch语句的入口,当我们的整型表达式满足case后面的整形常量表达式时,就进入开始执行后面的语句。

        但我们必须注意,我们执行后,在哪结束呢?实际上当我们满足case后面的表达式时,就开始执行后面的所有语句,直至全部执行跳出switch语句。

        如果我们想要只执行case1后面语句,我们只需要在case 1后面的语句中的最后一条加上 "break"

switch(整形表达式)
{
    case 整形常量表达式: //case 1
            语句;
            break;
    case 整形常量表达式: //case 2
            语句;
            break;
    ......
    default:
        语句;
}

3.关系操作符

> 大于运算符

< 小于运算符

>= 大于等于运算符

<= 小于等于运算符

== 相等运算符

!= 不相等运算符

4.逻辑操作符

    4.1 逻辑取反运算符 !:

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

   4.2 与运算符 &&:

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

    4.3 或运算符 ||:

        或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

   4.4 短路: 

        C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。  

5.while循环

循环赋值语句;

while(循环判断语句)
{
    循环调整语句;
}

下图是 while循环执行流程图

 

6.do-while循环

do
{
    语句;
}while(表达式);

下面是 do - while 循环执行流程图

7.for循环

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

下面是for循环执行流程图

8.循环的嵌套

        下面我们用一个经典的C语言例题,来讲解循环的嵌套。

题目:找出100~200之间的素数,并打印在屏幕上。
            注:素数又称质数,只能被1和本身整除的数字。
#include <stdio.h>
int main()
{
     int i = 0;
     //循环产⽣100~200的数字
     for(i=100; i<=200; i++)
     {
         //判断i是否为素数
         //循环产⽣2~i-1之间的数字
         int j = 0;
         int flag = 1;//假设i是素数
         for(j=2; j<i; j++)
         {
             if(i % j == 0)
             {
                 flag = 0;
                 break;
             }
         }
         if(flag == 1)
             printf("%d ", i);
     }
     return 0;
}

9.break和continue语句

    9.1break

        break的作用是永久跳出break属于的循环。

    9.2 continue

        continue的作用是跳过continue后面的语句,开始执行下一次循环。

10.goto语句

        C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。

#include <stdio.h>
int main()
{
     printf("hehe\n");
     goto next:
     printf("haha\n");
 
    next:
     printf("跳过了haha的打印\n"); 
     return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼的滋味@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值