☀️光天化日学C语言☀️(29)- while 语句 | 死循环啦!
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了☀️光天化日学C语言☀️(29)- while 语句 | 死循环啦!相关的知识,希望对你有一定的参考价值。
🙉饭不食,水不饮,题必须刷🙉
C语言免费动漫教程,和我一起打卡! 🌞《光天化日学C语言》🌞
LeetCode 太难?先看简单题! 🧡《C语言入门100例》🧡
数据结构难?不存在的! 🌳《数据结构入门》🌳
LeetCode 太简单?算法学起来! 🌌《夜深人静写算法》🌌
究极算法奥义!深度学习! 🟣《深度学习100例》🟣
一、前言
本文作者是从 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(n−1)+f(n−2)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 太简单?算法学起来! 🌌《夜深人静写算法》🌌
以上是关于☀️光天化日学C语言☀️(29)- while 语句 | 死循环啦!的主要内容,如果未能解决你的问题,请参考以下文章
☀️光天化日学C语言☀️(33)- 函数入门 | 开启下一个篇章!
☀️光天化日学C语言☀️(32)- continue 关键字 | 下一个!