c语言while循环使用教程(蚂蚁学堂-C语言编程)
认真,是一种态度
1、 循环简介
为了增加您对循环的理解,程序的第1版演示了不使用循环编程的局限性。该程序做了一点运算来计算穿9码鞋(男人的)脚用英寸表示的长度。
示例1 shoes1.c
这是一个使用了加法和乘法的程序。该程序假设您穿9码鞋,然后告诉您用英寸表示您的脚是多长。当然,只进行一只鞋的尺码计算的程序是在浪费时间和精力。您可以将程序写为一个交互式的程序来使程序更加有用,但是这仍未利用计算机的潜能。
您需要的是某种让计算机为连续的鞋尺码做重复计算的方法。毕竟做重复运算才是使用计算机做算术的主要原因。C提供了几种方法来做重复计算, 我们在这里介绍一种。该方法就是使用while循环,它能使您更有趣地利用运算符。示例2给出了改进后的计算鞋尺码的程序。
示例2 shoes2.c
解释一下while循环是如何工作的:
当程序第一次到达while语句时,检查圆括号内的条件是否为真。在这例子中,条件表达式是shoe<18.5。
shoe被初始化为3.0,它当然为真。最后一个语句shoe增加1.0,使shoe变成4.0.
此时,程序返回while部分去检查条件。为什么在这点呢?因为后面是一个结束花括号(}),而代码使用一对花括号来标出while循环的范围。在两个花括号之间的语句是被重复执行的语句。花括号和花括号里的程序部分被称为一个代码块。现在回到程序,值4小于18.5,所以跟在while后的被括起来的全部命令(代码块)将被重复执行(在计算机语句中,称程序“循环”执行这些语句),这个重复过程一直继续,直到shoe的值达到19.
因为此时19不再小18.5,所以shoe<18.5现在就变成了假。
因面控制转到紧跟while循环的第一个语句。在此例中,转到最后的printf()语句。
2、再探while循环
示例 summing.c
-
程序注释
这个循环的判断表达式是:status==1;==运算符是C的相等运算符。当status的值不为1时终止循环。
要使程序正确运行,在每次循环中应该为num获取一个新值,并且重置status。程序使用scanf()的两个不同的功能做到这一点。首先使用scanf()来尝试为num读入新值,然后使用scanf()的返回值来报告执行是否成功(scanf()返回成功读取项目的个数)。如果您输入的不是一个数字,例如q,那么scanf()就不能读入一个整数,所以它的返回值和status都为0.这将使循环终止 。
如果scanf()在尝试转换一个数值时遇到了问题(例如,检测到文件的尾部或者遇到硬件问题),它就会返回一个特殊值EOF,这个值一般被定义为-1.这个值同样也会导致循环终止。
总之,因为while循环是一个入口条件循环,所以程序必须在进入循环体之前获取输入并检查status的值。这就是程序在while之前有一个scanf()调用的原因。要使循环继续执行,在循环中需要一个读语句,这样程序才可以得到下一个输入的状态。这就是程序在while循环的结尾处还有一个scanf()的原因,它为下一次循环做准备。可以把如下用法做为循环的标准格式:
get first value to be tested
whlie the test is successful
process value
get next value
-
C风格的读循环
下面的结构:
status = scanf("%ld",&num);
while (status==1)
{
/*loop actions*/
status == scanf("%ld",&num)
}
可以用下面的形式代替:
while (scanf("%ld",&num)==1)
{
/* loop actions*/
}
第二种形式同时使用了scanf()的两种不同用法。首先,如果调用成功,函数会把一个值放在num中;第二,函数的返回值(1或0)用来控制循环。
3、while语句
-
终止while循环
这是对while循环至关重要的一点:当您构造一个while循环时,循环中必须包含能改变判断表达式的值来使表达式的值最终为假。否则循环永远不会终止。
-
循环何时终止
要知道,只有在计算判断条件的值时,才决定是终止循环还是继续执行。
-
while入口条件循环
while循环是使用入口条件的有条件循环。它被称为有条件,是因为语句部分的执行要依赖于判断表达式中的条件。这个表达式是一个入口条件,是因为在进入循环体之前必须要满足这个条件。
-
语法要点
在使用while时要谨记的一点是:只有位于判断条件之后的单个语句(简单语句或复合语句)才是循环的部分。
要记住,while语句本身在语法上算做一个单独的语句,即使它使用了复合语句。该语句从while开始,到第一个分号结束;在使用了复合语句的情况下,到终结花括号结束。
-
在C中,单独的分号“;”代表空语句。
今天你进步了吗?
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com