☀️光天化日学C语言☀️(29)- while 语句 | 死循环啦!

🙉饭不食,水不饮,题必须刷🙉

C语言免费动漫教程,和我一起打卡!
🌞《光天化日学C语言》🌞

LeetCode 太难?先看简单题!
🧡《C语言入门100例》🧡

数据结构难?不存在的!
🌳《画解数据结构》🌳

LeetCode 太简单?算法学起来!
🌌《夜深人静写算法》🌌

一、前言

  本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
  于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
  这一章的主要内容是 一种循环结构,while 语句。

二、人物简介

  • 第一位登场的就是今后会一直教我们C语言的老师 —— 光天。
  • 第二位登场的则是今后会和大家一起学习C语言的没什么资质的小白程序猿 —— 化日。

三、程序结构概述

在C语言中,共有三大常用的程序结构:
  顺序结构: 代码从前往后执行,没有任何跳转;
  选择结构 : 也叫分支结构,即 if else、switch 以及条件运算符;
  循环结构: 即重复执行同一段代码。

四、循环结构简介

#include <stdio.h>
int main() {
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    printf("I love you!\n");
    return 0;
} 

  • 重要的是,当输出语句为 100 条时,如果还用上面的思路进行输出,整个代码就会显得非常臃肿和冗余。所以,我们需要引入一种能够循环执行代码的结构。

1、while 语句

1)语法规则

  • while 语句的一般形式为:
while(表达式){
    语句块
}

它的含义是:
  1)首先,计算 表达式 的值,当值为真时, 执行 语句块 的内容;
  2)然后,再次计算 表达式 的值,如果为真,继续执行 语句块……
  这个过程会一直重复,直到表达式的值为假,则退出循环,执行 while 后面的代码。

  • 我们通常将上述的 表达式 称为循环条件,把 语句块 称为循环体,整个循环的过程就是不停判断 循环条件、并执行 循环体代码 的过程。
  • 例如,我们可以把输出 100 条 “I love you!” ,写成如下代码:
#include <stdio.h>
int main() {
    int iCount = 0;                // (1)
    while(iCount < 100) {          // (2)
        printf("I love you!\n");   // (3)
        ++iCount;                  // (4)
    }
    return 0;
} 
  • ( 1 ) (1) (1) 初始化一个计数器iCount为 0;
  • ( 2 ) (2) (2) 由于计数器小于 100,所以循环条件为真,则执行循环体;
  • ( 3 ) (3) (3) 输出一句话;
  • ( 4 ) (4) (4) 计数器自增;
  • 目前为止,已经输出了一句话,并且计数器iCount为 1,继续回到 while 部分判断计数器是否小于 100,成立则继续执行,当循环体执行了 100 次以后,iCount的值为 100,此时条件不满足,遂跳出循环。
  • while 循环可以这么设计:设置一个带有变量的循环条件;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,循环就结束了。

2)死循环

  • 当循环条件永远成立的时候,while 循环会一直执行下去,这就是我们通常所说的 死循环 。如下代码所示:
#include <stdio.h>
int main(){
    while(1) {
        printf("I love you!\n");
    }
    return 0;
}

  • 它会不停地输出“1”,直到用户强制关闭进程。

3)简单应用

  • 输入输出是我们常用的一种来测试算法实现正确性的方式。例如,当我们需要进行循环输入 a 和 b,并且输出 a + b 的值的时候,我们就可以这么写:
#include <stdio.h>
int main() {
    int a, b;
    while(scanf("%d %d", &a, &b) != EOF) {
        printf("%d\n", a + b);
    }
    return 0;
} 
  • 这里,我们先考虑scanf("%d %d", &a, &b)这个函数的返回值,当你从控制台输入两个数时,它会根据输入的格式正确与否,返回输入成功的数的个数,所以正常情况是返回 2 。
  • 当没有任何输入时,它会返回 EOF,所以导致 循环条件 变成,从而退出循环,退出循环以后就顺理成章的结束循环体,我们也就不能再进行输入了。

  其中EOF是一个宏定义,代表文件结尾,它的值是 -1,也就是说:scanf(...)函数,在没有任何输入以后会返回 -1。

【例题1】请利用 while 循环来计算 斐波那契数列 第 n n n 项,斐波那契数列的定义如下: f ( n ) = { 1 n = 0 1 n = 1 f ( n − 1 ) + f ( n − 2 ) n > 1 f(n) = \begin{cases} 1 & n=0 \\ 1 & n = 1 \\ f(n-1) + f(n-2) & n > 1\end{cases} f(n)=11f(n1)+f(n2)n=0n=1n>1

  • 实现过程参见课后习题。

2、do-while 语句

1)语法规则

  • 除了 while 循环,在 C语言 中还有一种 do-while 循环。
  • do-while 的一般形式为:
do{
    语句块
}while(表达式);

  do-while 循环与 while 循环的区别在于:它会先执行 语句块,然后再判断 表达式 是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次 语句块

  • 关于循环结构的内容,今天就先讲到这里了,后面还会提到 另一种循环结构 —— for 循环。循环结构可以帮助我们干很多事情,这个就需要大家自己去体会和摸索了,当然,课后习题也能够帮助大家更好的理解循环结构。

通过这一章,我们学会了:
  while 语句的用法;
  do while 语句的用法;

  • 希望对你有帮助哦 ~ 祝大家早日成为 C 语言大神!

课后习题


🙉饭不食,水不饮,题必须刷🙉

C语言免费动漫教程,和我一起打卡!
🌞《光天化日学C语言》🌞

LeetCode 太难?先看简单题!
🧡《C语言入门100例》🧡

数据结构难?不存在的!
🌳《画解数据结构》🌳

LeetCode 太简单?算法学起来!
🌌《夜深人静写算法》🌌
  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

英雄哪里出来

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

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

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

打赏作者

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

抵扣说明:

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

余额充值