7.3.2 while语句
while语句也叫while循环,能够不断执行一个语句块,直到条件为假时停止。while语句的一般格式如下。
while(表达式) 语句
其中,“表达式”是循环条件,“语句”是循环体。
上述格式的含义是:计算表达式的值,当值为真(非零)时,执行循环体语句。其执行过程如图7-16所示。
图7-16 while语句的执行过程
例如,可以通过如下代码计算1~100之间的整数和。
int main(){ int i, sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d\n", sum); }
在C语言中使用while循环语句时,应该注意以下9点。
(1)在使用过程中,指定的条件和返回值都应为逻辑值(真或假)。
(2)应该先检查条件,后执行循环体语句,也就是说循环体中的语句只能在条件为真时才执行,如果第一次检查条件的结果为假,则循环中的语句不会执行。
(3)因为while循环取决于条件的值,所以,它可用在循环次数不固定或者循环次数未知的情况下。
(4)一旦循环执行完毕(当条件结果为假时),程序就从循环体最后一条语句之后的代码行继续执行。
(5)如果循环中包含多条语句,则需要用{}括起来。
(6)while循环体中的每条语句都应用分号“;”来结束。
(7)while循环条件中使用的变量必须先声明并初始化,然后才能用于while循环条件中。
(8)while循环体中的语句必须以某种方式改变条件变量的值,这样循环才可能结束。如果条件表达式中的变量保持不变,则循环将永远不会结束,从而成为死循环。
(9)while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非零)就可继续循环。例如下面的代码。
int main(void){ int a=0, n; printf("\n input n: "); scanf("%d", &n); while (n--) printf("%d", a++*2); }
上述代码将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于a*2;a++。
实例7-7
在窗口中依次输出1×20,2×20,…,20×20的积
源码路径daima\7\7-7
本实例的实现文件为“while.c”,具体实现代码如下所示。
#include<stdio.h> int main (void){ int num=1, result; while (num<=20) { result=num*20; printf("%d*20:%d\n", num, result); num++; } }
拓展范例及视频二维码
范例7-7-01:实现一个简单的猜数游戏
源码路径:演练范例\7-7-01\
范例7-7-02:最大公约数和最小公倍数
源码路径:演练范例\7-7-02\
编译并运行上述代码,并在窗口中依次输出1×20,2×20,…,20×20的积,执行效果如图7-17所示。
图7-17 执行效果
在具体应用中,为了满足特殊系统的需求,可以嵌套使用while循环语句。具体格式如下。
while(i <= 10) { . . . while (i <= j) { . . . . . . } . . . }
在嵌套使用时,只有内循环完全结束后,才会进行下一次外循环。请读者课后仔细品味下面代码的含义。
#include <stdio.h> int main(void) { int nstars=1, stars; while(nstars <= 10) { stars=1; while (stars <= nstars) { printf("*"); stars++; } printf("\n"); nstars++; } }