滴水逆向联盟

标题: 判断循环结束和提前结束 [打印本页]

作者: 夺命书生    时间: 2014-11-17 08:49
标题: 判断循环结束和提前结束
在程序中,通常会用到循环结构来反反复的执行某一语句,但是不能够无限的的执行下去否则就会出现死循环,程序无法终止,那么如何判断循环结束于提前结束呢?

一般情况下,判断循环结束,可以由循环条件进行判断,循环语句都有判断循环结束的表达式,
如:while 中  while(x>10 && x<50) 中的表达式, x>10 && x<50 ,再如:for(i=i;i<10;i++)
当表达式中 i<10 条件不成立时就会结束循环,或者使用 break 来跳出循环。

例如:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int a=0,n;
  5.         printf("enter n:\n");
  6.         scanf("%d",&n);
  7.         while(1)
  8.         {
  9.                 a++;
  10.                 n--;
  11.                 printf("%d\n",a*a);
  12.                         if(n==0)
  13.                         {
  14.                                 break;
  15.                         }
  16.         }
  17.         return 0;
  18. }
复制代码
输入一个n值,当n值自减到0,或n的值为0时,则会执行break语句跳出循环。


判断循环体正常结束还是提前结束,通常是在循环语句的后面,再用一个或多个判断语句,检查循环变量的取值,
如果循环条件由多个循环变量构成,则可以对各个变量分别进行判断,下面通过例子来说明:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,a;
  5.         printf("please input:\n");
  6.         scanf("%d",&a);
  7.         for(i=2;i<a;i++)
  8.         {
  9.                 if(a%i==0)
  10.                 {
  11.                         break;
  12.                 }
  13.                 if(i==a)
  14.                 {
  15.                         printf("素数");
  16.                 }
  17.                 else
  18.                 {
  19.                         printf("不是素数\n");
  20.                 }
  21.         }
  22.         return 0;
  23. }
复制代码
上面的代码用于判断一个数,是否为素数,程序中的循环语句正常结束时当 i 大于a 的时候,
但 a 不能被 i 整除时,循环就会提前结束,故在循环语句后面添加一条判断语句,以提前结束循环。

在程序中一个完整的循环包括三部分, 循环入口  循环体  循环出口,如果程序没有循环出口,那就是死循环
除非某些特定的环境需要使用到死循环,否则死循环么有实际意义。





作者: 大灰狼    时间: 2014-11-17 09:31
顶。。。。。。。。。。。。。。。。。。。。。。。
作者: 大禹治水    时间: 2014-11-18 10:50
不错哦,继续。。。。。。。




欢迎光临 滴水逆向联盟 (http://dtdebug.com/) Powered by Discuz! X3.2