循环结构(三)

2022-04-11 17:46:34 浏览数 (1)

改变循环的执行流程

无论哪种循环语句,正常执行情况下都是由“循环条件”来决定是否结束循环的执行。但在实际程序设计中有时需要根据循环执行情况的变化而“提前”结束循环执行或跳过本次循环的剩余语句进入下一次循环的情况。C语言使用break语句和continue语句解决这些问题。

break语句

1. break语句

break语句可以应用循环语句中,用于跳出循环体。下面对break语句的使用进行详细说明:

(1) 一般形式:break;

(2) break语句只能用于switch、while、do-while和for语句中。

(3) break语句的作用是结束“直接包含”它的循环或switch语句的执行,即它只能跳出包含它的一层语句结构。当break出现循环语句的嵌套结构时,只能跳出包含它的最内层循环;当break出现在循环语句与switch语句的嵌套结构时,同样只能跳出包含它的最内层的switch语句或循环语句。

例:输入一个正整数判断并输出它是否是素数。

思路分析:素数也称为质数,其数学定义为:一个大于1的正整数,除了1和它本身外,不能被整除以其他正整数。

根据定义,该问题可以采用穷举法进行实现,即对于正整数n,从2开始到√n依次尝试每个数是否能够被n整除,如果存在能够这样的数,则n不是素数;如果不存在这样的数,则n是素数。

进一步分析可以知道,在找到第一个可以整除的数后,无需继续检查,直接结束循环即可。

参考答案:

代码语言:javascript复制
 #include <stdio.h>
   #include <math.h>
   int main()
   {
       int i, n, is_prime, k;
       printf("Input a number(>1): ");
       scanf("%d", &n);
       is_prime = ;     //假设n是素数
       k = sqrt(n);      //计算n的平方根
       for(i=; i<=k; i  )
       {
           if(n%i == )
           {
               is_prime = ;   //n不是素数
               break;          //发现第一个因子就可以确定不是素数,直接结束循环
           }
       }
       if(is_prime)
       {
           printf("%d is prime numbern", n);
       }
       else
       {
           printf("%d is not prime numbern", n);
       }
       return ;
   }

结果示例:

continue语句

2. continue语句

有时并不希望终止整个循环的执行,而只是提前结束本次循环迭代,进入下一次循环迭代。这时可以使用continue语句,其使用方法如下:

(1) 一般形式:continue;

(2) continue语句只能用于while、do-while和for语句中。

(3) continue语句的作用是结束循环体的本次执行,即跳过循环体中continue语句之后的其它语句,转去判定循环条件,决定能否继续执行循环。

用于while和do-while语句中时,跳过循环体中continue语句之后的其它语句后,直接判断循环条件是否成立;而用于for语句中时,跳过循环体中continue语句之后的其它语句后,先执行表达式3,然后再去判断循环条件是否成立。

例:统计在100到1000之间不能被7整除的整数的个数。

思路分析:解决该问题需要对指定范围中的每一个整数进行检查,如果不能被7整除,就进行计数加1;若能被7整除,则不加1。

参考答案:

代码语言:javascript复制
#include <stdio.h>
   int main()
   {
       int i, count;
       count = ; //计数初始为0
       for(i=; i<=; i  )
       {
           if(i% == )
           {
               continue; //如果整除7,跳过计数语句,继续检查下一个数
           }
           count = count ; //计数加1
       }
       printf("count=%dn", count);
       return ;
   }

结果示例:

goto语句

3. goto语句

goto语句也称为无条件转移语句,其一般格式如下:

goto 语句标号;

如:

label: i ;

loop: while(x<7)

C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环和跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

例:使用goto语句实现求1 2 3 … 100的值。

参考答案:

代码语言:javascript复制
#include<stdio.h>
#include<stdlib.h>

int main()
{
     int i=,sum=;
     loop:
      sum=sum i;
       i  ;
       if(i<=)goto loop;
printf("sum=%dn",sum);
return ;
}

结果示例:

0 人点赞