目录
前言
想象一下我们写了一个小型的程序,它的功能是在某购物网站上购买某化妆品,条件是当该化妆品价格低于1000时就执行购买的操作。
我们直觉反应可以用if条件判断来实现,判断一下化妆品的价格,低于1000的时候下单购买。
但是化妆品的价格一直在随季节和节假日的促销活动而波动,如果只执行一次可能无法成功完成购买,因为这一次判断的时候可能价格在1000以上。
我们再试试用for循环,让它重复不停的执行:判断价格,价格符合条件就购买,价格不符合条件就不购买;
但是这也有问题,我们不知道让for循环执行多少次比较合适,10次?100次?
因此要解决这类特定场景的问题,我们今天会学习while循环。
1.while循环
1.1
条件循环,又称while循环,以判断条件是否成立,来决定是否执行循环内的代码。当判断为true时,代码会执行循环代码块;当判断为false时则终止循环。
就像有个工作是计件搬砖,判断搬满500个砖才能发钱。在没搬满500个时就要一直搬,搬满500个砖就结束发钱。😁
在while循环中,有一个判断条件,来决定是否执行循环内的代码。判断条件为true,则继续执行循环;判断条件为false,就会终止循环;这个判断条件,又叫做边界条件。
例如:
搬砖例子中,搬满500块砖就是终止循环的判断条件,也就是边界条件。
1.2
接下来我们通过while条件循环来实现输出1到9的正整数:
int count=1;
while(count<10){
printf("%d\n",count);
count++;
}
1.定义一个整型变量count
2.while循环的关键字 while
3.while循环的判断条件 count < 10
4.判断条件需要放在括号()里面 (count<10)
int count=1;
while(count<10){
printf("%d\n",count);
count++;
}
5.循环的代码块 { printf("%d\n", count); count++; }
6.打印count的值 printf("%d\n", count)
7.count的值自增 count++
1.3
while括号()
里面就是判断的条件,也就是我们学的边界条件;花括号{}
里面就是循环的代码块:
whlie(count<10){
printf("%d\n",count);
count++;
}
判断条件(count<10)
为真的时候,就会执行循环代码块;
判断条件不成立,为假的时候,就终止循环。
条件循环中,除了while循环还有另外一种do-while循环,我们来了解一下它。
2.do-while循环
2.1
while循环和do-while循环的核心差异在于:
while循环是先判断,再执行;
do-while循环是先执行,再判断。
学习一下do-while循环:
int conut=1;
do{
printf("%d\n",count);
count++;
} while(count<10);
1.定义一个整型变量 count
2.关键字 do,表明先执行一次代码块
3. do-while循环中的代码块 { printf("%d\n", count); count++; }
4.关键字 while
5.循环的判断条件 (count < 10)
2.2
do
关键字,是执行的意思,这里会先执行一次代码块里的代码,while
关键字,后面接循环的判断条件。
do-while循环对比while循环最大的差异在于,do-while循环是先执行一次代码块里面的代码,然后进行条件判断,所以无论判断条件成立与否,都会执行一次代码块中的代码,而while循环是先判断条件,如果条件不成立,就不会执行代码块中的代码。
do-while循环输出的是5,4,3,2,1,而之前的while循环在相同的情况下 输出的也是5,4,3,2,1。但是它们俩是存在区别的。
2.3
区别:
do-whille
循环是无论为真还是假,先执行一遍代码(循环操作),然后再进行判断是否为真或者是否为假,若为真,则继续执行循环;
while
是先判断,若为真则执行循环,若为假则不循环(while循环可能一次也不执行)。
如果第一次循环判断为真,两者结果一样;
如果第一次循环判断为假,两者结果不一样,while一次没执行,do-while执行一次。
2.4
我们仔细捋一下代码的执行顺序就会发现,while循环和do-while循环是很容易替代使用的,也就是对于所有的do-while循环:
我们都可以在while循环前面加一段代码或者修改判断条件里面的变量初始值,达到完全等价的效果。
由于while循环和do-while循环的高度雷同性,所以大部分循环的场景我们都推荐直接使用while循环。
因为while的代码执行顺序更加的清晰,先判断-再执行。
3.易错点
eg:
int count=10;
do{
printf("%d\n",count);
count--;
}while(count<0);
输出结果
10
我们可以看到同样的判断条件为假,do-while
循环因为先执行再判断的顺序,还是输出了一个10;但是while
循环因为先判断再执行的原因,根本没有执行代码块里的代码,而没有输出。
eg:
1.do-while循环的 while()判断语句后面要加一个分号:
2.while 循环先判断在执行(若判断为假,一次也不会执行)
3.do-while 循环先执行再判断 (若判断为假,会先执行一次)
4.思维导图
最后我想说的是:
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。