县蒙文网站建设汇报,网站301检测工具,wordpress英文主题改成中文,html转换成wordpress主题目录 while循环有两个重要组成部分#xff1a;
while 是一个预测试循环
无限循环
do-while 循环 while循环有两个重要组成部分#xff1a;
进行 true 值或 false 值判断的表达式#xff1b;只要表达式为 true 就重复执行的语句或块#xff1b;图 1 显示了 while 循环的…目录 while循环有两个重要组成部分
while 是一个预测试循环
无限循环
do-while 循环 while循环有两个重要组成部分
进行 true 值或 false 值判断的表达式只要表达式为 true 就重复执行的语句或块图 1 显示了 while 循环的一般格式右侧流程图直观地描绘了其工作原理。 图 1 while 循环的语句结构及流程图 现在来看一看 while 循环的每个部分。第一行有时称为循环头由关键字 while 组成后跟待测试的条件括在括号中。条件由任何可被判断为 true 或 false 的表达式表示。接下来是循环体它包含一个或多个 C语句。 循环的工作原理是首先判断条件表达式的值如果它是真的则循环体中的每个语句都被执行然后再次测试条件如果条件表达式仍然为 true则循环体中的每个语句将再次被执行。如此循环往复直到条件表达式被判断为 false。 请注意与 if 语句一样在有条件执行的主体中的每个语句都以分号结尾但在括号中的条件表达式后面没有分号这是因为 while 循环不完整后面没有跟随的语句。而且与 if 语句一样当循环体包含两个或多个语句时这些语句必须用大括号括起来。当循环的主体只包含一个语句时可以省略括号。 基本上while 循环就像是一个可以执行一遍又一遍的 if 语句。只要括号中的表达式为 true则有条件执行的语句将不断重复。 下面的程序使用了 while 循环打印“Hello”字符串 5 次。 #include iostream
using namespace std;int main()
{int count 1;while (count 5){cout Hello ;count count 1;}cout \nThats all!\n;return 0;
}
程序输出结果
Hello Hello Hello Hello Hello Thats all!
分析这个程序。在第 6 行中整数变量 count 被定义并用值 1 初始化。在第 7 行中while 循环以下面的语句开头
while (count 5)
该语句测试变量 count 以确定其值是否小于或等于 5。因为它确实小于 5所以循环体第 9 行和第 10 行中的语句被执行
cout Hello ; count count 1;
第 9 行中的语句将显示字符串“Hello”。第 10 行中的语句则给变量 count 加上 1使其值变成了 2。这是循环体中的最后一个语句因此在执行之后循环又一次开始。它再次测试表达式“count5”并且由于仍然为 true循环体中的语句将再次执行该循环不断重复直到变量 count 等于 6使表达式“count5”为 false然后退出循环如图 2 所示。 图 2 while 循环工作原理 循环的每一次执行称为迭代。以上示例中的循环将执行 5 次迭代直至表达式“count5”被测试并且发现为 false导致循环终止然后程序继续执行该循环之后的语句。控制循环迭代次数的变量称为循环控制变量在上面的例子中count 就是循环控制变量。
while 是一个预测试循环
while 循环是一个预测试循环。这意味着它会在每次迭代之前测试其状态。如果测试表达式为 false则循环将永远不会迭代。如果要确保一个 while 循环至少执行一次则必须初始化相关的数据使测试表达式一开始即为 true。 例如注意上面程序中变量 count 的定义
int count 1;
count 变量被初始化为值 1。如果数字已经被初始化为大于 5 的值则循环将永远不会执行如下面的程序段所示
int count 6;
while (count 5)
{cout Hello ;count count 1;
}
无限循环
除极少数情况外循环必须包括一种终止方式。这意味着循环中的某些内容必须最终使测试表达式为 false。在上面程序中当表达式“count 5”变为 false 时循环停止。 如果循环没有停止的方式则称为无限循环。无限循环将持续重复直到程序中断示例如下
int count 1;
while (count 5)
{cout Hello ;
}
这是一个无限循环因为它不包含更改 count 变量值的语句。每次测试表达式“count 5”时count 的值都是 1。
小心分号
通过在 while 循环的第一行之后意外地放置一个分号也可以创建无限循环示例如下:
int count 1;
while (count 5) ; //该分号是一个错误
{cout Hello ;count count 1;
}
因为编译器在发现开始语句块的大括号之前看见了第一行末尾的分号所以它会在分号的位置结束循环。尤其是它会将分号前面丢失的语句解释为空语句也就是什么都不做的语句然后将 while 语句和它后面的任何内容断开。 对于编译器来说整个循环看起来就像下面这样
while(count 5);
这个 while 循环将持续执行空语句当然它永远不会执行任何操作。该程序似乎“陷入迷惘”因为没有任何屏幕输出也不会显示任何活动。
不要忘记大括号
在编写循环语句时如果有条件执行的语句是一个语句块则不要忘记将所有的语句都包含在一组大括号中。如果大括号意外被忽略则 while 语句有条件执行的仅仅是下一个语句请看下面的代码示例
int count 1;
//该循环忘记使用大括号
while (count 5)cout Hello ;count count 1;
在这段代码中只有一个语句也就是 cout 语句是在 while 循环的主体中。给变量 count 加 1 的语句不在循环体内所以 count 的值保持为 1循环测试条件永远为 true。循环将一遍又一遍地打印“Hello”字符串直到用户停止程序。
不要混清 与
循环的另一个常见陷阱是在打算使用 运算符时却意外地使用了 运算符。例如以下示例就是一个无限循环因为作为循环条件的测试表达式每次都给 remainder 赋值为 1而不是测试 remainder 是否等于 1
while (remainder 1) //错误条件表达式为赋值语句
{cout Enter a number: ;cin num;remainder num % 2;
}
请记住任何非零值都将被判断为 true。
do-while 循环
除了 while 循环之外C 还提供了 do-while 循环。do-while 循环看起来类似于把一个 while 循环倒过来。图 3 显示了其格式和流程图右侧流程图直观地描绘了其工作原理。 图 3 do-while-循环的语句结构及流程图 与 while 循环一样如果循环体中只有一个有条件执行的语句则可以省略大括号。注意do-while 循环必须在测试表达式的右括号后用分号终止。 除了外观形式do-while 循环和 while 循环之间的区别是 do-while 是一个后测试循环这意味着在循环结束时也就是在每次迭代完成后才测试其表达式。因此即使测试表达式在开始时为 falsedo-while 也至少要执行一次迭代。 例如在以下 while 循环中cout 语句根本不会执行
int x 1;
while (x 0)cout x endl;
但是在以下 do-while 循环中的 cout 语句将执行一次因为 do-while 循环在迭代结束之前不会判断表达式 x0
int x 1;
docout x endl;
while (x 0);
如果要确保循环执行至少一次则应使用 do-while 循环。
拜拜~