C语言——循环控制语句

循环辅助语句

一般而言,程序进入循环后,在下一次循环测试之前会执行完循环体中的所有语句。continue 和 break 语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。


break语句

程序执行到循环中的break语句时,会终止包含它的当前循环,并继续执行循环体下面的语句。


一、用法

  1. break语句通常用在循环语句,可使程序终止循环而执行循环后面的语句,通常 break语句 总是与 if语句 连在一起,即满足条件时便跳出循环。(可用在死循环中

    • #include <stdio.h>
      
      int main( void )
      {
      	int i,count = 0; 
      	//用于循环结构 
      	for(i=0; i<100; i++)
      	{
      		count += i;
      		if(count>100)	//当累加到大于100时,退出循环 
      		{
      			break;
      		}
      	}
      	
      	//while死循环 
      	while(1)
      	{
      		count--;
      		if(count==0)
      		{
      			break;
      		}
      	}
      	
      	//for死循环 
      	for(;;)
      	{
      		count++;
      		if(count==10)
      		{
      			printf("%d",count);
      			break;
      		}
      	}
      }
      
  2. break语句会终结最近的外层循环。

    • #include <stdio.h>
      
      int main( void )
      {
      	int i, j, count = 0, n=100;
      	for(i=0; i<1; i++)
      	{
      		for(j=0; j<5; j++)
      		{
      			while(1)
      			{
      				break;	//只退出离它最近的循环,在这里是while循环,继续执行while循环外的代码,即for循环 
      			}
      			printf("a");
      		}
      	}
      }
      

      在这里插入图片描述

      结果 :在这里插入图片描述

  3. 当执行break语句时,会立即退出当前循环,在当前循环体内break后的语句不执行

    • #include <stdio.h>
      
      int main( void )
      {
      	int i, j, count = 0, n=100;
      	for(i=0; i<1; i++)
      	{
      		for(j=0; j<5; j++)	//循环5次 
      		{
      			while(1)
      			{
      				if(2>1)
      				{
      					printf("c");
      					break;
      					printf("x");
      				}
      				
      				if(2<1)
      				{
      				}
      				else
      				{
      					printf("b");
      				}
      			}
      			printf("f");
      		}
      	}
      }
      

      结果:
      在这里插入图片描述

  4. 如果一个 for 循环被 break 所终结,该循环的控制变量会保持其当前值。

    • #include <stdio.h>
      
      int main( void )
      {
      	int i, j, count = 0, n=100;
      	for(i=0; i<n; i++)
      	{
      		count++;
      		if(i==4)
      		{
      			break;
      		} 
      	}
      	printf("i=%d count=%d",i ,count);
      }
      
      结果:
      在这里插入图片描述
  5. break语句通常也用在switch语句,让程序离开switch语句,跳至switch语句后面的下一条语句

    • #include<stdio.h>
      int main()
      {
          char score = 'C';
          switch(score)
          {
             case 'A':
             		printf("90分以上\n");
             		break;
             case 'B':
             		printf("80到90分\n");
             		break;
             case 'C':
             		printf("70到80分\n");
             		break;
             case 'D':
             		printf("60到70分\n");
             		break;
             case 'E':
             		printf("60分以下\n");
             		break;
             default:
             		printf("输入错误\n");
           }
      		 printf("太棒了!");
           return 0;
      }
      

      在这里插入图片描述
      结果:
      在这里插入图片描述

continue语句

执行到 contiune语句 时,会跳过本次迭代的剩余部分,强迫开始下一次循环。如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环。


一、用法

  1. 对于 for 循环,执行continue语句会跳到更新循环控制变量处,然后再进行判断条件,continue 语句执行后自增语句仍然会执行。
    • #include<stdio.h>
      int main()
      {
      	int i;
      	for(i=1; i<10; i++)
      	{
      		if(i==5)
      		{
      			continue;
      		}
      		printf("%d\n", i);
      	}
      	return 0;
      }
      

      在这里插入图片描述
      结果:
      在这里插入图片描述

  2. 对于while 和 do…while 循环,执行continue 语句,重新执行条件判断。(在continue之前,更新循环变量
    • #include<stdio.h>
      int main()
      {
      	int i;
      	while(i<10)
      	{
      		if(i==5)
      		{
      			i++;	//注意:需要i++,不然会一直在这里死循环。
      			continue;	
      		}
      		printf("%d\n", i);
      		i++;
      	}
      	return 0;
      }
      

      结果:
      在这里插入图片描述
      在这里插入图片描述

  3. continue语句可用于排除元素
    • #include<stdio.h>
      int main()
      {
      	int i;
      	while((scanf("%d",&i)) != EOF)
      	{
      		if (i < 0 || i > 9)
      		{	
      			continue;	//只输出0到9的数,其他数不输出 
      		}
      		printf("%d ", i);
      	}
      	return 0;
      }
      

二、注意

  1. continue语句并没有使整个循环终止
  2. 在while或do-while循环中,continue无法更新循环条件,如果读到continue之前没有更新循环条件,那么continue就会挡住后面的代码,可能使后面的循环更新条件无法执行(如果你的循环更新条件放在后面的话),陷入死循环

goto语句

C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句


注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

一、语法

goto label;
...
...
label: statement;

label 可以是任何除 C 关键字以外的纯文本(apple、123),它可以设置在 C 程序中 goto 语句的前面或者后面
在这里插入图片描述

  • #include<stdio.h>
    int main()
    {
    	int i;
    again: 
    	while((scanf("%d",&i)) != EOF)
    	{
    		if (i < 0 || i > 9)
    		{	
    			goto again; 
    		}
    		printf("%d ", i);
    	}
    	
    	
    	return 0;
    }
    

二、适用场景

终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。(可以用多层break代替)

  • for(...)
      for(...)
     {
        for(...)
       {
          if(exception)
            goto error;
       }
     }
      …
    error:
    if(exception)
        // 处理错误情况
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值