循环语句
在不少实际问题中有许多具有规律性的重复操作,比如我们要算出1到10000之间所有数字加和。这个时候我们不能写一万行代码来逐一语句地实现相加运算,这个时候就需要在程序中重复地按一定规律地执行某些运算。
一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句有两种:while(包括do-while)语句与for语句。所有while(do-while)语句能表达的功能for语句全都能实现,反之亦然。while层次清晰,for方便灵活。老外多爱用while,中国人多爱用for。
while循环语句的特点
每个循环语句都由三个框架区域构成:初始化区,条件判断区,递增区。
如图4-4所示,while循环语句的流程结构都非常清晰,三个分区的位置排放非常明显:
图4-4 while语句的结构图
比如:输入任意两个整数(前面小,后面大),求2个整数之间所有整数的加和。
例4-14测试while语句的运行流程 int main() { int i = 90,sum = 0; while(i<=100) { sum += i; ++i;//等价于i=i+1 } printf("结果是:%d\n",sum); return 0; } |
将以上代码输入到C语言编译器中进行编译、运行并查看打印结果:
a)先用可以先用笔算或数学家高斯的口算方法算出最终相加的结果,观察打印出来的结果是否完全一致;
b)最好能在调试模式下单步执行,观察程序进入循环体之后反复执行计算后两个变量的数值变化;
do-while循环语句的特点
do-while是while语句的一种特殊格式,特点是先执行再判断,核心运算区至少被无条件地执行一次。如图4-5所示,do-while与while语句有三点不同:
a) 上方有do关键字;
b) 条件判断区被移动到了尾部;
c)do-while循环尾部必须有分号,而while语句的尾部不需要有分号。
图4-5 do-while语句的结构
我们用do-while循环来实现上一节的思考题,实现输入任意两个整数给变量x和y,再计算出两个输入的整数之间所有整数的加和?
例4-15测试do-while语句的运行流程 #include <stdio.h> int main() {//包括数据录入过程都是循环的初始化区 int x,y,i,sum=0; //初始化区 printf("请输入两个整数:"); scanf("%d%d",&x,&y); //初始化区 i = x; //初始化区 do { sum += i; ++i; }while(i<=y); printf("从%d到%d所有整数的加和是:%d\n",x,y,sum); return 0; } |
将以上代码输入到C语言编译器中进行编译、运行并查看打印结果:
a)输入数据之后,先用可以先用笔算或口算方法算出累加的结果,观察打印出来的结果是否完全一致;
b)最好能在调试模式下单步执行,观察程序进入循环体之后反复执行计算后两个变量的数值变化;