前言
接上回,通过前面分支循环第一章,我们知道了if
和switch
的用法,本章我们讲继续学习while,do while,for循环语句结构。
一、while
循环
C语言提供了3种循环语句,while就是其中一种,while语句的语法结构和if语句十分相似.
首先我们对比一下if和while,
if(表达式) 语句; while(表达式)括号 语句;//如果循环体包含更多的语句,可以加大括号
你可以对比来看一下,让我们来用代码展示深入了解一下
#include <stdio.h> int main() { if(1) printf("你吃了没\n");//1为真,执行语句 return 0; } • 1 • 2 • 3 • 4 • 5 • 6 • 7
#include <stdio.h> int main() { while(1) printf("我没吃\n");//while后边的条件满⾜,死循环的打印我没吃 return 0; }
同样的条件if
和while
,while
也是可以实现循环效果的,但是为什么while
会死循环呢?
while语句的执⾏流程图:
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
让我们结合代码来解释:
- 在屏幕上打印1~10的值
#include <stdio.h> int main() { int i = 1; while(i<=10) { printf("%d ", i); i = i+1; } return 0; }
- 11
2.输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4321
输⼊:521,输出:125
题⽬解析
要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
要想去掉n的最低位,找出倒数第⼆位,则使⽤n=n/10 操作就可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
循环1和2两个步骤,在n变成0之前,就能到所有的位。
- 代码如下:
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); while(n) { printf("%d ", n%10); n /= 10; } return 0; }
二、 for循环
2.1引入库
for 循环是三种循环中使⽤最多的,for 循环的语法形式如下:
for(表达式1; 表达式2; 表达式3) 语句;//当然循环体包含更多的语句,可以加上大括号
表达式1⽤于循环变量的初始化
表达式2⽤于循环结束条件的判断
表达式3⽤于循环变量的调整
2.2 for循环的执⾏流程
让我们用代码来验证一下:
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++) { printf("%d ", i); } return 0; }
2.3 while循环和for循环的对⽐
for
和 while
在实现循环时都有初始化、判断、调整这三个部分,但是for
循环更加集中,便于代码的维护。当代码较多时,使用for
循环更优一些。
接下来让我们来计算计算1~100之间3的倍数的数字之和
#incl#include <stdio.h> int main() { int i = 0; int sum = 0; for(i=1; i<=100; i++) { if(i % 3 == 0) sum += i; } printf("%d\n", sum); return 0; }
如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
因此可以稍微的优化一下
#include <stdio.h> int main() { int i = 0; int sum = 0; for(i=3; i<=100; i +=3) { sum += i; } printf("%d\n", sum); return 0; }
三 、do-while循环
do 语句; while(表达式) • 1 • 2 • 3
while
和for这两种循环都是先判断条件,如果满足就进入循环并执行循环语句,如果不满足就跳出循环;- 而
do while
循环则是先直接进入循环体,执行循环语句,然后再执行表达式。如果表达式为真,就会进行下一次循环;如果表达式为假,则不再继续循环。dowhile循环的执⾏流程:
do while
循环的实例
在屏幕上打印1~10的值
#include <stdio.h> int main() { int i = 1; do { printf("%d ", i); i = i + 1; }while(i<=10); return 0; }
do while 使⽤在循环体⾄少被执⾏⼀次的场景
【C语言】分支循环第二章2:https://developer.aliyun.com/article/1474625