0%

循环-while

这一篇 <循环>


while-循环

循环语句可以在满足条件时,不断地重复执行一些动作。

if 和 while 的区别

  • if 是一次性的。条件满足或者不满足时,做完一次都会离开。
  • while 条件满足还会做,不满足时就会离开。

while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是 循环体 。

{ } 内的叫循环体。

注意:

循环体内要有改变条件的机会,不然会死循环出不来。程序运行超时


while 循环

  • 如果我们把while翻译作 “ 当 ” ,那么一个while循环的意思就是: 当条件满足时,不断地蠢重复循环体内的语句。
  • 循环执行之前判断是否继续循环,所以有可能循环一次也没用被执行。

这是如果一直使用 if 去判断,这个数字有多少位数

image-20200916104657763

如果这样做,虽然也能判断出来。但会非常复杂,繁琐,所以就要用到 while


程序

判断数字,有多少位数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main()
{
int x;
int n = 0;
scanf("%d",&x);
n++;
x /=10;

while (x > 0) {
n++;
x /= 10;
}
printf("%d\n",n);
return 0;
}

解析:

这个程序使用了 while 循环

假设 x = 4567

n++ = 1

4567 / 10 = 456

进入 while 循环,进行判断,

456 还 > 0 , 继续取余,成为 45 > 0 ,n++ = 2 。

直到 x < 0 ,达成条件,退出循环。

每取余一次,n也会记录 +1 +1 +1。

最后输出结果:

image-20200916114216390


调试


image-20200916171921248

n++ ;

x /= 10;

这一段代码,循环内还出现了一次,所以更改为第二则 代码

不使用计算机的情况下 来判断会不会成功运行,和预期结果一样。

  • 人脑模拟计算机的运行,在纸上列出所有的变量,随着程序的进展不断重新计算变量的值。当程序运行结束时,留在表格最下面的就是程序的最终结果。

在纸上运行的结果:

ere

添加printf

调试:

还可以在合适的地方加printf ,作为调试手段

因为有时候 开不出 debug ,开不出复杂交互东西的时候

就采用这样一些手段,输出一些句子,比如:

  • 程序运行到哪
  • 程序运行的时候里面的变量是什么样

例如:

1
2
3
4
5
6
7
x = 3
while (x > 0 ) {
n++;
x /= 10;
printf("x=%d,n=%d\n",x ,n);
}
printf("%d\n", n);

运行结果:

x = 0 ,n = 1

1

3 / 10 =0 ,n = 1 ,这就是会输出运行结果

如果 x = 0;

就不会有 printf("x=%d,n=%d\n",x ,n); 这句的输出,

因为 x 已经= 0 ,就不会进入循环,不会有后续printf的输出

方便调试的小手段。


do-while 循环


do-while 在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环。


do-while 循环结构:

image-20200924163325930

示例:数位数的算法

  1. 用户输入 x ;
  2. 初始化 n 为 0 ;
  3. x = x / 10 ,去掉个位;
  4. n++;
  5. 如果 x > 0, 回到 3 ;
  6. 否则 n 就是结果。
1
2
3
4
5
6
7
8
9
int x;
scanf("%d, &x");
int n = 0 ;
do
{
x/= 10;
n ++;
} while (x > 0 );
printf("%d",n);

解析:

do {} 里面的句子,无论如何都是需要做的

例如 x = 345

先做一遍do语句中的, 345/10 = 34 ,n = 1

进入while 中,发现条件满足,再进入do循环体内

45/10 = 3 ,n =2 ,条件满足,再次进入

5/10 = 0 , n =3 ,条件不满,退出循环

注意while语句后,接分号 :


两种循环的区别


image-20200924163759063
  • do-while 循环和while循环很像,区别是在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。
  • 与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。