C语言break和continue语句的用法
C语言 break 和 continue 都是转向语句,它们可以改变程序的流程,使程序从其所在的位置转向另一处执行。
本文重点介绍 break 在循环中的使用,break 在 switch 语句中的使用请转到:C语言switch case语句的用法(非常详细)
根据程序的目的,有时需要程序在满足另一个特定的条件时立即终止循环,程序继续执行循环体后面的语句,使用 break 语句可以实现此功能。
其一般的语句格式为:
请看下面的例子:
需要注意的是,break 语句只是跳出当前的循环语句,对于嵌套的循环语句,break 语句的功能是从内层循环跳到外层循环。例如:
第 05 行,假设 m 是素数,先给 flag 赋初值为 1,如果不是素数再重新赋值,否则不用改变。
第 08~15 行,通过 for 循环依次用 2~(m-1) 去整除 m,如果能整除,说明 m 不是素数,给 flag 变量赋值为 0,并用 break 语句退出循环(不用再继续循环到 i<m,此刻足以说明 m 不是素数)。
第 16~19 行,通过判断 flag 的值决定输出的内容。
素数是除了 1 和本身不能被其他任何整数整除的整数。判断一个数 m 是否为素数,只要依次用 2、3、4……m-1 作除数去除 m,只要有一个数能整除 m,m 就不是素数;如果没有一个数能整除 m,m 就是素数。
在求解过程中,可以通过使用 break 语句使循环提前结束,不必等到循环条件起作用。而且 break 语句总是作 if 的内嵌语句,即总是与 if 语句一块使用,表示满足什么条件时就结束循环。
continue 语句的功能与 break 语句不同,其功能是结束当前循环体的执行,而重新执行下一次循环。在循环体中,continue 语句被执行之后,其后面的语句均不再执行。
本范例中,只有当 i 的值能同时被 3 和 7 整除时,才执行 continue 语句,执行后越过后面的语句(printf 语句及后面的部分不执行),直接使 i++,然后判断循环条件 i<=200,再进行下一次循环。只有当 i 的值不能同时被 3 和 7 整除时,才执行后面的 printf 语句及 n++ 语句。
一般来说,它的功能可以用单个的 if 语句代替,如本例 6~13 行:
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
C语言 break 语句
break 语句可以用在循环语句或者 switch 语句中:- break 用在 switch 语句中的作用是退出 switch 分支语句;
- break 用在循环语句中使用时,可使程序跳出当前循环结构,执行循环后面的语句。
本文重点介绍 break 在循环中的使用,break 在 switch 语句中的使用请转到:C语言switch case语句的用法(非常详细)
根据程序的目的,有时需要程序在满足另一个特定的条件时立即终止循环,程序继续执行循环体后面的语句,使用 break 语句可以实现此功能。
其一般的语句格式为:
break;
break 语句用在循环语句的循环体内的作用是终止当前的循环语句。请看下面的例子:
/* 无break语句*/ int sum = 0, number; scanf("%d",&number); while (number != 0) { sum += number; scanf("%d",&number); } /* 有break语句*/ int sum = 0, number; while (1) { scanf("%d",&number); if (number == 0) break; sum += number; }这两段程序产生的效果是一样的。
需要注意的是,break 语句只是跳出当前的循环语句,对于嵌套的循环语句,break 语句的功能是从内层循环跳到外层循环。例如:
int i = 0, j, sum = 0; while (i < 5) { for ( j = 0; j < 5; j++) { sum + = i + j; if ( j == i) break; } i++; }本例中的 break 语句执行后,程序立即终止 for 循环语句,并转向 for 循环语句后的下一个语句,即 while 循环体中的 i++ 语句,继续执行 while 循环语句。
示例
输入一个大于 2 的整数,判断该数是否为素数。若是素数,输出“是素数”,否则输出“不是素数”。#include<stdio.h> int main() { int m,i,flag; /*引入标志性变量flag,用0和1分别表示m不是素数或是素数*/ flag=1; printf("请输入一个大于2的整数:"); scanf("%d",&m); for(i=2;i<m;i++) /*i从2 变化到m-1,并依次去除m*/ { if(m%i==0) /*如果能整除m,表示m不是素数,可提前结束循环*/ { flag=0; /*给flag赋值为0*/ break; } } if(flag) printf("%d是素数!\n",m); else printf("%d不是素数!\n",m); }运行结果:
请输入一个大于2的整数:50
50不是素数!
第 05 行,假设 m 是素数,先给 flag 赋初值为 1,如果不是素数再重新赋值,否则不用改变。
第 08~15 行,通过 for 循环依次用 2~(m-1) 去整除 m,如果能整除,说明 m 不是素数,给 flag 变量赋值为 0,并用 break 语句退出循环(不用再继续循环到 i<m,此刻足以说明 m 不是素数)。
第 16~19 行,通过判断 flag 的值决定输出的内容。
素数是除了 1 和本身不能被其他任何整数整除的整数。判断一个数 m 是否为素数,只要依次用 2、3、4……m-1 作除数去除 m,只要有一个数能整除 m,m 就不是素数;如果没有一个数能整除 m,m 就是素数。
在求解过程中,可以通过使用 break 语句使循环提前结束,不必等到循环条件起作用。而且 break 语句总是作 if 的内嵌语句,即总是与 if 语句一块使用,表示满足什么条件时就结束循环。
C语言 continue 语句
根据程序的目的,有时需要程序在满足另一个特定的条件时结束本次循环重新开始下次循环,使用 continue 语句可实现该功能。continue 语句的功能与 break 语句不同,其功能是结束当前循环体的执行,而重新执行下一次循环。在循环体中,continue 语句被执行之后,其后面的语句均不再执行。
示例
输出 100~200 所有不能被 3 和 7 同时整除的整数。#include<stdio.h> int main() { int i,n=0; /*n计数*/ for(i=100;i<=200;i++) { if(i%3==0&&i%7==0) /*如果能同时整除3和7,不打印*/ { continue; /*结束本次循环未执行的语句,继续下次判断*/ } printf("%d\t",i); n++; if(n%10==0) /*每10个数输出为一行*/ printf("\n"); } }运行结果:
100 101 102 103 104 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 190 191 192 193 194 195 196 197 198 199 200
本范例中,只有当 i 的值能同时被 3 和 7 整除时,才执行 continue 语句,执行后越过后面的语句(printf 语句及后面的部分不执行),直接使 i++,然后判断循环条件 i<=200,再进行下一次循环。只有当 i 的值不能同时被 3 和 7 整除时,才执行后面的 printf 语句及 n++ 语句。
一般来说,它的功能可以用单个的 if 语句代替,如本例 6~13 行:
if(!(i%3==0&&i%7==0)) /*如果能同时整除3和7,不打印*/ { printf("%d\t",i); n++; if(n%10==0) /*每10个数输出一行*/ printf("\n"); }这样编写比用 continue 语句更清晰,又不用增加嵌套深度,因此如果能用if语句,就尽量不要用 continue 语句。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。