在程序中,通常会⽤到循环结构反复地执⾏某⼀语句,但是不能⽆限地执⾏下去,否则会出现死循环,程序⽆法终⽌。那么,如何判定循环结束和提前结束呢?
⼀般情况下,判断循环结束可以由循环条件进⾏判断,循环语句都有判断循环结束的表达式,如 while 语句中 while(x>10 && x<50)中的条件表达式 x>10 && x<50;再如,for(i=1;i<10;i++)中条件表达式 10,当不满⾜条件表达式时就会结束循环,或者使⽤ break 语句,当程序执⾏到 break 语句时,跳出循环。例如:
- #include
- 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
- 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("不是素数")
- }
- }
- }
上⾯的代码⽤于判断⼀个数是否为素数。程序中的循环语句正常结束是当i⼤于a的时候,但是当a不能被i整除时,循环就会提前结束,故在循环语句后⾯添加⼀条判断语句,以提前结束循环。
在程序中,⼀个完整的循环包括三部分,即循环的⼊口、循环体和循环的出口。循环若没有结束的条件便成为⽆限循环,即死循环,程序⽆法终⽌。除⾮某些特定环境需要⽤到⽆限循环,否则⽆限循环没有实际意义。