目录
c语言给了三种循环语句。
·for语句主要适用于循环次数确定的循环结构。
·循环次数及循环控制条件要在循环过程中才能确定的循环可用while和do-while。
·三种循环结构可互相嵌套也可以互相转换。
在使用循环结构时,容易发生以下错误,应尽量避免。
1、误把“=”当等于(“==”)
如:要输出b的值为2.
#include<stdio.h>
int main()
{int a,b;
b=2;
a=2;
while(a=2)//这里变成了将2赋值给a
b=1;
printf("%d",b);
}
这里就会变成死循环。
正确写法如下:
#include<stdio.h>
int main()
{int a,b;
a=2;
while(a!=2)
b=1;
printf("%d",b);
}
值得一提的是,在过去的学习中我们知道0和1不只有数学意义,在c语言中也充当逻辑值的地位。
所以当循环结构中的循环控制条件为数字时并不会出现逻辑错误。
如:
#include<stdio.h>
int main()
{int a,b;
b=0;
a=2;
while(1)//该循环始终执行
b=1;
printf("%d",b);
}
#include<stdio.h>
int main()
{int a,b;
b=0;
a=2;
while(0)//该循环始终不进行
b=1;
printf("%d",b);
}
这两种情况在题目中时常出现,在日常编程中不建议使用。
2、由于循环控制变量的方向改变的方向不对而造成死循环
如:
short i=1;
while(i>=0)
sum+=i++;
i开始就大于0,而以后每次都增加i的值,使条件i》=0总是成立,直到i的值为32767加1,超越正数的表示范围而得到负值才结束,这时的结果肯定与希望的不同。
3、由于循环控制变量的值没有改变而造成死循环
i=1;
while(i<=10)
sum+=i;
这时候循环就会因为循环控制变量i未发生变化而一直延续下去,正确的写法则是把 sun+=i 改为 sum+=i++。
而其他那些细枝末节的易错点就不在这里深究,如忘加分号,复合循环语句没加花括号,没有给控制循环变量初始化等。
如有错误请指出,谢谢!