C语言:分支和循环语句

        以下是是小编根据自己的理解,对有关分支循环方面的相关内容进行的总结,若有不当之处,欢迎指正。

一、循环语句

1、for循环

for语句的语法结构:

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

表达式1⽤于循环变量的初始化;

表达式2⽤于循环结束条件的判断;

表达式3⽤于循环变量的调整;

       for循环语句在需要明确控制循环次数的场景下非常方便,其执行流程是:执行初始化表达式(仅一次)—>执行循环条件(真执行,假退出)—>执行循环语句—>执行更新表达式—>执行循环条件,如此往复,直到输出结果。

我们在这里举个例子:

在屏幕上输入1~10的值

#include <stdio.h>

int main()
{
    int i = 0;
    for(i = 1; i <= 10; i++)
    {
    printf("%d ", i);
    }
    return 0;
}

代码解析:先执行i=1,判断i是否小于等于10,如果是,则打印;如果不是,则退出循环。直到输出结果为1 2 3 4 5 6 7 8 9 10

2、while循环

while语句的语法结构:

while(表达式)
{
    语句;
}

       while循环是一种入口控制型循环,能够实现循环效果。其核心逻辑是:先判断条件,若条件为真,就执行循环体;倘若条件为假,就跳过循环体,继续执行后续代码。可以简单概括为:先判断,后执行;条件为真,循环不止。其条件表达式是一个布尔逻辑判断,每次进入循环前 ,都会先计算该表达式的值。真(非0)执行,假(0)则跳过循环体,继续执行循环后面的代码。

我们这里举一个例子:

输⼊⼀个正的整数,逆序打印这个整数的每⼀位

例如: 输⼊:12345,输出:54321

            输⼊:569,输出:965

#include <stdio.h>

 int main()
 {
     int n = 0;
     scanf("%d", &n);
     while(n)
     {
         printf("%d ", n % 10);
         n /= 10;
     }
     return 0;
 }

代码解析:n%10就可以得到该数字的最低位数,12345得到的就是1234余5,然后执行循环1234得到123余4,如此往复,直到输出54321。数字569也是同样的道理。

for和while循环语句的区别:

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

3、do-while循环

do-while语句的语法结构:

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

        do-while循环语句是先执行循环体、后判断条件的循环控制语句,其核心特点是:至少执行一次循环体。适用于需要确保循环内容先运行的场景。其执行流程是:先执行do后面{}中的循环体(无论条件是否成立,这是与while循环的核心区别)—>判断while后面的条件表达式:如果真,则回到do的处;倘如为假,则跳出循环,执行后续代码。我们可以把他简单的称为:先执行,后判断,条件控制。

举例:

【例1】在屏幕上打印1~10的值 

#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
        printf("%d ", i);
        i++;
    }while(i <= 10);

    return 0;
}

代码解析:i=1—>do循环—>打印—>判断i是否<=10(真则继续循环,假则退出),最后结果为1 2 3 4 5 6 7 8 9 10

【例2】输⼊⼀个正整数,计算这个整数是几位数?

             例如: 输入:1234 输出:4 输入:12 输出:2

#include <stdio.h>

 int main()
 {
     int n = 0;
     scanf("%d", &n);
     int cnt = 0;
     do
     {
         cnt++;
         n = n / 10;
     } while (n);
     printf("%d\n", cnt);
     return 0;
 }

代码解析:变量初始化后进入do循环—>cnt为1,往下走,n为123—>开始循环,cnt为2,n为12—>cnt为3,n为1—>cnt为4,n为0,退出,最终结果为4

4、循环的嵌套

for、while、do-while循环语句往往嵌套在一起可以很好的解决问题。

【例子】找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。

题目分析:

1.要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。

2.假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤ 循环解决。

3.如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

#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;
 }

二、分支

1、if语句

if语法的语法形式:

if(表达式)
{
    语句;
}

if语句是最基础的条件判断语句,其根据指定条件的(真)或(假)来决定是否执行代码。

【例】输入一个整数,判断其是否为奇数

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

代码分析:若输入的是奇数,则打印出来的是 “num 是奇数”;若输入的是偶数则直接退出。

如果我们同时要打印出是偶数,则要引入else,此时就成了:

 int main()
 {
     int num = 0;
     scanf("%d", &num);
     if(num % 2 == 1)
         printf("%d 是奇数\n", num);
     else
         printf("%d 是偶数\n", num);

     return 0;
 }

代码分析:输入的是奇数,返回“该数字 是奇数”;输入的是偶数,返回“该数字 是偶数”。

默认在if和else语句中只控制一条语句。在if else语句中,else可以和另外一个if语句连用,构成多重判断。如果有多个if和else语句,我们只需要记住,else总是跟最近的if相匹配。这时,{}它的作用就体现出来了。

2、switch语句

switch语句的语句结构:

switch (expression)
 {
 case value1: statement
 case value2: statement
 ...
 default: statement
 }

        switch语句是一种多条件分支语句,用于将一个变量或表达式的值与多个预设的case值进行匹配,匹配成功则执行对应代码块,switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。

上⾯代码中,根据表达式就执行expression不同的值,执行相应的case 分⽀。如果找不到对应的值,执行相应的 default 分⽀。

注: • switch 后的 expression 必须是整型表达式

        • case 后的值,必须是整形常量表达式

三、其他

1、goto语句

goto语句是一种用于无条件跳转的控制结构,能直接跳转到程序中标记好的位置继续执行,简而言之就是goto语句可以实现在同一函数内跳转到设置好的标号处。

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤;但是 出,使⽤ goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳 goto 就⾮常的⽅便了。

for(...)
 {
     for(...)
     {
         for(...)
         {
             if(disaster)
             goto error;
         }
     }
 }
 error:
 //...

2、break和continue语句

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应⽤到循环中的。

• break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。

• continue 的作用是跳过本次循环中所差异的。

本期的内容要点就为大家整理到这里,感谢您的支持与鼓励。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值