TA的每日心情 | 怒 2014-12-12 07:01 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
逆向联盟VIP会员
- 积分
- 344
|
在程序中,通常会用到循环结构来反反复的执行某一语句,但是不能够无限的的执行下去否则就会出现死循环,程序无法终止,那么如何判断循环结束于提前结束呢?
一般情况下,判断循环结束,可以由循环条件进行判断,循环语句都有判断循环结束的表达式,
如:while 中 while(x>10 && x<50) 中的表达式, x>10 && x<50 ,再如:for(i=i;i<10;i++)
当表达式中 i<10 条件不成立时就会结束循环,或者使用 break 来跳出循环。
例如:
- #include<stdio.h>
- int main()
- {
- int a=0,n;
- printf("enter n:\n");
- scanf("%d",&n);
- while(1)
- {
- a++;
- n--;
- printf("%d\n",a*a);
- if(n==0)
- {
- break;
- }
- }
- return 0;
- }
复制代码 输入一个n值,当n值自减到0,或n的值为0时,则会执行break语句跳出循环。
判断循环体正常结束还是提前结束,通常是在循环语句的后面,再用一个或多个判断语句,检查循环变量的取值,
如果循环条件由多个循环变量构成,则可以对各个变量分别进行判断,下面通过例子来说明:
- #include<stdio.h>
- int main()
- {
- int i,a;
- printf("please input:\n");
- scanf("%d",&a);
- for(i=2;i<a;i++)
- {
- if(a%i==0)
- {
- break;
- }
- if(i==a)
- {
- printf("素数");
- }
- else
- {
- printf("不是素数\n");
- }
- }
- return 0;
- }
复制代码 上面的代码用于判断一个数,是否为素数,程序中的循环语句正常结束时当 i 大于a 的时候,
但 a 不能被 i 整除时,循环就会提前结束,故在循环语句后面添加一条判断语句,以提前结束循环。
在程序中一个完整的循环包括三部分, 循环入口 循环体 循环出口,如果程序没有循环出口,那就是死循环
除非某些特定的环境需要使用到死循环,否则死循环么有实际意义。
|
|