标题：循环语句
C语言中的循环语句
在C语言中，有三种类型的循环语句：for语句、while语句和do While语句。分别介绍如下：for语句1 for为当型循环语句，它很好地体现了正确表达循环结构应注意的三个问题：
⑴控制变量的初始化。
⑵循环的条件。
⑶循环控制变量的更新。
2 for表达式
表达式1：一般为赋值表达式，给控制变量赋初值；
表达式2：关系表达式或逻辑表达式，循环控制条件；
表达式3：一般为赋值表达式，给控制变量增量或减量。
语句：循环体，当有多条语句时，必须使用复合语句。
3 for语句格式为：
for(表达式1；表达式2；表达式3）  循环语句语句：/*循环体*/
4 for语句执行过程如下：
①先对表达式1赋初值；
②判别表达式2是否满足给定条件，若其值为真，满足循环条件，则执行循环体内语句，然后执行表达式3，进入第二次循环，再判别表达式2……；否则判断表达式2的值为假，不满足条件，就终止for循环，执行循环体外语句。for语句语法流程如下图所示：
例题：
# include
main ()
{
int n,nu;
nu=0;
for (n=1;n<=200;n++)  循环语句　　
nu+=n;
printf ("nu=%d\n",nu);
}
编译并执行后，屏幕显示：
nu=20100
在程序中，for语句小括号内的三个表达式分别为：n=1;n<=200;n++。表达式1,n=1是给n赋初值，表达式2是关系表达式,n小于等于200时，表达式都为真，则执行循环体内的语句nu+=n；（即nu=nu+n；），然后执行表达式3(n++），进入下一轮循环；若n大于200时，表达式2为假，则终止循环，执行printf()语句，在屏幕上打印出：nu=20100。
5 几种特殊for语句的用法：
⑴for小括号内三个表达式为空
例 for(;;)
printf ("test");
在小括号内只有两个分号，无表达式。表示无限循环。这种无限循环适用于菜单选择程序中。
⑵没有循环体的for语句
例：for(; *str==''; str++)
；
这种情况循环体内的语句只是一个分号，这个for循环是指针str所指流中的前导空格删除。
例：for (t=0;t ;)
此例在程序中起延时作用。while语句while语句格式为：
while(表达式)
语句；/*循环体*/
这里的表达式是循环能否继续下去的条件，而语句是循环体。只要表达式为真，则执行循环体内语句。否则终止循环，执行循环体外语句。该循环语句语法流程如下图所示：
@@01L14301.GIF；图2@@
例题：f7_2.c
# include h
main ()
{
int u,v,temp;
printf("请输入两个非负整数：\m");
scanf("% d % d ",& u,&v);
While(v!=0)
{
temp=u% v;/*循环体内语句*/
u=v; /*循环体内语句*/
v=temp; /*循环体内语句*/
}
printf("最大公约数是：%d\n",n);
}
编译并执行结果，屏幕显示：
请输入两个非负整数：
若从键盘输入：150 35并回车，屏幕显示：
最大公约数是：5
程序中，while循环体内有三条语句，应用大括号括起来，表示一个语句块。当表达式v!=0为真时，程序循环执行循环体内三条语句，直到v!=0为假时，终止循环，执行printf()语句，在屏幕上显示最大公约数。do while语句do while语句格式为：
do
语句；/*循环体*/
While（表达式）；
程序进入do while循环后，先执行循环体内语句，然后判断表达式的真假，若为真则进行
下一次循环，否则为假则终止循环。该循环语句的特点是，表达式为假时也执行一次循环体
内语句。
do while语句语法流程如下图所示：
总的说来，for和while循环是在顶上测试循环终止条件，而do while循环是在之后，在底部进行测试所以循环体至少要执行一次。
利用do while循环的特点，可写出菜单程序。
例题：
# include
main ()
{
char ch;
printf("1.输入记录\n");
printf("2.删除记录\n");
printf("3.显示记录\n");
printf("请选择：\n");
do
{
ch=getchar ();
switch (ch)
{
case '1' :prinft ("输入记录 \n");
break;
case '2' :prinft ("删除记录 \n");
break;
case '3' :prinft ("显示记录 \n");
break;
default:prinft("选择错！\n");
}
}while(ch!='1` && ch!='2` && ch!='3`);
}
本程序执行的过程是，通过do while循环体内的第一条语句ch=getchar ()接收用户的选择，第二条语句switch判断用户输入是否是‘1’，‘2’，‘3’，若不是则显示"选择错！"。程序利用do while语句的特点，首先执行循环体内语句一次，然后用表达式ch!=‘1’&&ch!=‘2’&& ch!=‘3’来循环判断用户的键盘输入，只要不是‘1’、‘2’、‘3’，程序总是在这里循环。
这个程序实例只是为了说明do while语句用法，实际应用中的菜单程序，要在每条case语句冒号后面写出要调用的相应函数。
总结以上三种循环语句，for语句的功能最强,它有多种特殊形式。该语句小括号内的表达式，可任意变动，可以省略，也可以增加。例如，在小括号内的分号间增加几个表达式如for(m=0,h=1;n<100;n++），或for (h=0,j-50;h<=j;h++,j--）等等。可以将循环体的一些语句放在表达式3的位置，中间用逗号分隔。如：for (i=1,j=strlen (me); i 三种循环语句，均可嵌套使用，也就是在一个循环内又包含另一个循环结构。也可互相嵌套使用，可有多曾嵌套结构。
Basic语言中的循环语句
在 VBScript 中可使用下列循环语句：
Do...Loop：当（或直到）条件为 True 时循环。
While...Wend：当条件为 True 时循环。
..Next：指定循环次数，使用计数器重复运行语句。
For Each...Next：对于集合中的每项或数组中的每个元素，重复执行一组语句。Do 循环可以使用 Do...Loop 语句多次（次数不定）运行语句块。当条件为 True 时或条件变为 True 之前，重复执行语句块。
当条件为 True 时重复执行语句
While 关键字用于检查 Do...Loop 语句中的条件。有两种方式检查条件：在进入循环之前检查条件（如下面的 ChkFirstWhile 示例）；或者在循环至少运行完一次之后检查条件（如下面的 ChkLastWhile 示例）。在 ChkFirstWhile 过程中，如果 myNum 的初始值被设置为 9 而不是 20，则永远不会执行循环体中的语句。在 ChkLastWhile 过程中，循环体中的语句只会执行一次，因为条件在检查时已经为 False。
Sub ChkFirstWhile()
Dim counter,myNum
counter = 0
myNum = 20
Do While myNum > 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox 循环重复了 & counter & 次。
End Sub
Sub ChkLastWhile()
Dim counter,myNum
counter = 0
myNum = 9
Do
myNum = myNum - 1
counter = counter + 1
Loop While myNum > 10
MsgBox 循环重复了 & counter & 次。
End Sub
重复执行语句直到条件变为 True
Until 关键字用于检查 Do...Loop 语句中的条件。有两种方式检查条件：在进入循环之前检查条件（如下面的 ChkFirstUntil 示例）；或者在循环至少运行完一次之后检查条件（如下面的 ChkLastUntil 示例）。只要条件为 False，就会进行循环。
Sub ChkFirstUntil()
Dim counter,myNum
counter = 0
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox 循环重复了 & counter & 次。
End Sub
Sub ChkLastUntil()
Dim counter,myNum
counter = 0
myNum = 1
Do
myNum = myNum + 1
counter = counter + 1
Loop Until myNum = 10
MsgBox 循环重复了 & counter & 次。
End Sub
退出循环
Exit Do 语句用于退出 Do...Loop 循环。因为通常只是在某些特殊情况下要退出循环（例如要避免死循环），所以可在 If...Then...Else 语句的 True 语句块中使用 Exit Do 语句。如果条件为 False，循环将照常运行。
在下面的示例中，myNum 的初始值将导致死循环。If...Then...Else 语句检查此条件，防止出现死循环。
Sub ExitExample()
Dim counter,myNum
counter = 0
myNum = 9
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
If myNum < 10 Then Exit Do
Loop
MsgBox 循环重复了 & counter & 次。
End SubWhile...Wend循环..Wend 语句是为那些熟悉其用法的用户提供的。但是由于 While...Wend 缺少灵活性，所以建议最好使用 Do...Loop 语句。
..Next循环..Next 语句用于将语句块运行指定的次数。在循环中使用计数器变量，该变量的值随每一次循环增加或减少。
例如，下面的示例将过程 MyProc 重复执行 50 次。For 语句指定计数器变量x 及其起始值与终止值。Next 语句使计数器变量每次加 1。
Sub DoMyProc50Times()
Dim x  For...Next循环语句For x = 1 To 50
MyProc
Next
End Sub
关键字Step 用于指定计数器变量每次增加或减少的值。在下面的示例中，计数器变量j 每次加 2。循环结束后，total 的值为 2、4、6、8 和 10 的总和。
Sub TwosTotal()
Dim j,total
For j = 2 To 10 Step 2
total = total + j
Next
MsgBox 总和为 & total &；。
End Sub
要使计数器变量递减，可将 Step 设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中，计数器变量myNum 每次减 2。循环结束后，total 的值为 16、14、12、10、8、6、4 和 2 的总和。
Sub NewTotal()
Dim myNum,total
For myNum = 16 To 2 Step -2
total = total + myNum
Next
MsgBox 总和为 & total &；。
End Sub
Exit For 语句用于在计数器达到其终止值之前退出 For...Next 语句。因为通常只是在某些特殊情况下（例如在发生错误时）要退出循环，所以可以在 If...Then...Else 语句的 True 语句块中使用 Exit For 语句。如果条件为 False，循环将照常运行。
使用 For Each...Next
For Each...Next 循环与 For...Next 循环类似。For Each...Next 不是将语句运行指定的次数，而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。
在以下示例中，Dictionary 对象的内容用于将文本分别放置在多个文本框中：
<HTML>
<HEAD><TITLE>；窗体与元素</TITLE></HEAD>
<SCRIPT LANGUAGE=VBScript>
<!--
Sub cmdChange_onClick
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
Add 0,Athens'添加键和项目
Add 1,Belgrade
Add 2,Cairo
For Each I in d
frmForm.Elements(I).Value = D.Item(I)
Next
End Sub
-->
</SCRIPT>
<BODY>
<CENTER>
<FORM NAME=frmForm>
<Input Type = Text>
<Input Type = Text>
<Input Type = Text>
<Input Type = Text>
<Input Type = Button NAME=cmdChange VALUE=单击此处>
</FORM>
</CENTER>
</BODY>
</HTML>