C语言基础第6,7天:循环结构

C语言基础:06~07天笔记

内容提要

  • 回顾
  • 循环结构

回顾

分支结构:

​ 单分支:if…

​ 双分支:if…else, 表达式1? 表达式2:表达式3

​ 多分支

​ ①:if…else…嵌套

​ ②:if…else if…else…

​ ③switch…case…

循环结构

什么是循环结构

代码在满足某种条件的前提下,重复执行,就叫做循环结构.

循环的分类

  • 无限循环:其实就是死循环,程序设计中尽量避免无限循环,如果非要使用,那么这个循环一定要在可控范围内.

  • 有限循环:循环限定循环次数或者终止循环的条件.

循环的构成

  • 循环的条件

  • 循环体

    当型循环的实现

    特点: 先判断,后执行,如果条件不满足,一次都不执行

    典型代表: while循环和for循环

while

语法:

//写法1:省略{}
while (循环条件)(表达式)
    循环语句;		//单语句 

//写法2:保留{}
while (循环条件)
{
    循环语句; 		//可以是单语句,可以是复合语句
}

说明:

  1. 循环条件的返回值必须是逻辑值(布尔类型,条件表达式只能是关系表达式或者逻辑表达式,可以是具体的值(0,非=,true,false)). 在C语言中,使用0和非0来表示关系表达式或者逻辑表达式的值,如果引入<stdbool.h>也可以使用true或者false来表晒

  2. {}包起来的内容整体称之为循环体

  3. 我们要在循环体中控制循环条件的变化, 否则产生死循环

    执行过程:

    特点:

    先判断后执行,循环体语句有可能一次都不执行

案例:

  • 需求:求1~100的累加和
  • 分析:
    • 创建一个变量sum,用来接收累加和
    • 创建一个变量i, 用来表示计算数,我们给i给个初始值 i = 1,每次循环的时候,让i++
    • 在循环中,使用sum += i,完成累加和运算
    • 同时我们要限定i的范围 i <= 100
      • 第一次 sum += i
#include <stdio.h>

int main(int argc,char *argv[])
{
        //定义两个变量,sum存储累加和,i用来存储计算数(可变变量
        int sum = 0 , i = 1;



    //写一个循环实现类和计算
        while(i <= 100)
        {
            // 累加和计算
            sum += i;//sum = sum + i
            //给循环变量赋值,用来影响循环条件,保证循环条件有出口
            i++;
        }    

        printf("1~100的累加和为:%d\n",sum);
    return 0;
}

案例:

  • 需求: 求1~100的偶数和

  • 分析:

    在这里插入图片描述

在这里插入图片描述

死循环:

while(1)
for…

原则上: for循环能实现的,while循环一定可以实现,for循环可以看作是while循环的一种特殊写法

语法:

for (①表达式1; ②表达式2; ③表达式3)
{
    ④ 循环语句; 	//如果单语句,可以省略{};如果是复合语句,不能省略
}
3e6e6a7ded63e4651b8553652975b393

说明:

1. `()`中可以只保留两个分号;;,举例`:for(;;)`,此时就是for循环的死循环
1. `表达式1`是`循环变量`,我们需要赋初值,循环变量可以是==单个==,也可以是==列表,==多个循环变量使用逗号分隔
  1. 表达式2循环条件,用来限制循环的次数,循环条件支持关系表达式,逻辑表达式,举例:i<10 && j<=1

  2. 表达式3改变循环变量(条件),支持列表.这里可以使用赋值表达式,举例:i++,j++

  3. 执行顺序:①②④③→ ②④③ →…→②

在这里插入图片描述

执行过程

在这里插入图片描述

特点:先判断,后执行,循环体语句有可能一次都不执行

​ 循环变量的初始化,举例: int i = 2;

​ 循环条件: 举例: i <= 100

​ 循环变量的更新: 举例: i++

​ 案例:

​ 需求:求斐波拉切数列前20个

​ 分析:

​ 斐波拉切数列指的是符合一定规则的数列,举例:1,1,2,3,5,8…

​ 斐波拉切数列特点是第三个等于前两个的和.最开始的第1,2个数是固定的,都是1

#include <stdio.h>

int main(int argc,char *argv[])
{
    int f1 = 1; //前1个数字
    int f2 = 2; //后1个数字

    int i = 1; //循环变量,控制循环次数,我们需求是输出20个,只需要10次
    for (;i <= 10; i++)
    {
        printf("%12d%12d\n",f1,f2);

        f1 += f2;
        f2 += f1;
    }
    return 0;
}

运行结果:

在这里插入图片描述

死循环:

for(表达式;;表达式3)
for(;;)

直到型循环的实现’

特点:先执行,后判断,不管条件是否满足,至少执行一次

代表::do …while. goto(已淘汰)

do…while

语法:

do
{
 	循环体;
} while(循环条件);

在这里插入图片描述

特点: 先执行,后判断,不管条件是否满足,循环体语句至少执行一次

案例:

  • 需求:求100以内的偶数和

    goto

    语法:

    goto 标签(label)
    

标签: 表明目标的代码的位置,是一个不加""的字符串,

循环结构的典型应用场景

  • 求累和:举例:1+2+3+...+n
  • 求累积:1*2*3
  • 求均值:举例:(1+2+3+…10)/100
  • 求极值:

break与continue

break

功能:

​ ① 用来switch中,用来跳出switch的case语句,如果case没有break,可能会产生case穿透

​ ②用在循环中(while do…while for)提前结束循环,也就是跳出整个循环

说明:

​ ①break不能用于循环语句和switch语句之外的其他任何语句之中

​ ②break只能终止并跳出最近一层的循环结构

在这里插入图片描述

案例:

  • 需求: 四海同学参与运算符考试,如果考试及格就跳出循环,否则就一直考试
continue

功能: continue语句不会结束整个循环,而是跳过本次循环尚未执行的语句,进入下一次循环,

说明:

​ ①仅用于循环语句中,

​ ②在嵌套循环的情况下,continue语句只对包含它的最近一次循环其作用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值