C控制语句:循环
1.while循环
(1.)何时终止循环
程序示例1.1:
#include <stdio.h>
int main(void)
{
int n=5;
while(n<7) //第7行
{
printf(“n=%d\n”,n);
n++;第10行
printf(“Now n = %d\n”,n);//第11行
}
printf(“The loop has finished.\n”);
return 0;
}
运行程序,输出如下:
n = 5
Now n = 6
n=6
Now n = 7
The loop has finished.
在第2次循环时,变量n在第10行首次获得值7。但是,此时程序并未退出,它结束本次循环(第11行),并在对第7行的测试条件求值时才退出循环(变量n在第1次判断时为S,第2次判断时为6)。
(2.)while: 入口条件循环
while循环是使用入口条件的有条件循环。所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件,如(index < 5)。该表达式是一个入口条件(entry condition),因为必须满足条件才能进入循环体。在下面的情况中,就不会进入循环体,因为条件一开始就为假:
index=10;
while (index++ < 5)
printt(“Have a fair day or better.\n”);
把第1行改为: Index = 3;
就可以运行这个循环了。
(3.)用关系运算符和表达式比较大小
while循环经常依赖测试表达式作比较,这样的表达式被称为关系表达式(relational expression),出现在关系表达式中间的运算符叫做关系运算符(relational operator)。前面的示例中已经用过一些关系运算符,表6.1列出了C语言的所有关系运算符。该表也涵盖了所有的数值关系(数字之间的关系再复杂也是有人与人之间的关系复杂)。
| 运算符 | 含义 |
|---|---|
| < | 小于 |
| <= | 小于或等于 |
| == | 等于 |
| >= | 大于或等于 |
| > | 大于 |
| != | 不等于 |
关系运算符常用于构造while语句和其他C语句中用到的关系表达式。这些语句都会检查关系表达式为真还是为假。下面有3个互不相关的while语句,其中都包含关系表达式。
while (number < 6)
{
printf(“Your number is too small.\n”);
scanf("%d", number);
}
while (ch !=’$’)
{
count++;
scanf("%c", &ch);
}
while (scanf("%f", &num) == 1)
sum = sum + num;
注意,第2个while语句的关系表达式还可用于比较字符。比较时使用的是机器字符码(例如:ASCII)。但是,不能用关系运算符比较字符串。
虽然关系运算符也可用来比校浮点数,但是要注意比较浮点数时,尽量只使用<和>。因为浮点数的舍入误差会导致在逻辑上应该相等的却不相等。例如3乘以1/3的积是1.0。如果用把1/3表示成小数点后面6位数字,乘积则是.999999,不等于1。使用fabs()函数(声明在math.h头文件中)可以方便地比较浮点数,该函数返回一个浮点值的绝对值(即没有代数符号的值)。