1、学习目标
- 掌握break语句的用法
- 掌握continue语句的用法
- 掌握return语句的用法
- 总结与思考
2、break语句
-
用于从循环体内跳出循环体,即提前结束一层循环。
-
break只能用在循环语句和switch语句中。
-
例子:打印出半径不超过10,面积小于100的圆。
#include
#define PI 3.14 int main() { int r,area; for(r = 1; r <= 10; r++){ area = PI*r*r; if(area > 100) break; printf("r = %d,area = %dn", r, area); } return 0; } 运行结果:
fuzhu_control$ ./app r = 1,area = 3 r = 2,area = 12 r = 3,area = 28 r = 4,area = 50 r = 5,area = 78
-
判断素数
在一个大于1的自然数中,除了1和此数自身外,没法被其他自然数整除的数。
也就是说,只有两个正因数(1和该数本身)的自然数即为素数。比1大但不是素数的数称为合数,1和0既非素数也非合数。
对于一个大于或等于3的正整数,判断它是不是一个素数。
分析:首先输入整数n;设置变量i = 2;n被i除,得余数r,如果r = 0,则打印“n不是素数”,算法结束,否则执行i++;如果i<=√n(根号n),返回n被i除,得余数r,否则打印“n是素数”,然后算法结束。
#include
#include int main() { int n, i = 2; printf("Please input n(>3):"); scanf("%d", &n); while(i <= sqrt(n)){ if(n % i == 0) break; i++; } if(i <= sqrt(n)) printf("%d not sushun",n); else printf("%d is sushun",n); return 0; } 运行结果:
fuzhu_control$ ./app Please input n(>3):4 4 not sushu /fuzhu_control$ ./app Please input n(>3):5 5 is sushu
3、continue语句
-
结束本次循环,接着判定下一次是否执行循环。
-
注意continue与break的区别
-
continue只结束本次循环,而break终止本层循环
-
例子:打印出100到110之间不能被3整除的所有数。(注意观察continue和break的运行结果的不同)
#include
int main() { int n; for(n = 100; n <= 110; n++){ if(n % 3 == 0) continue;//结束本次循环,判断进行下一轮循环 // break; //直接跳出本层循环 printf("%dn", n); } return 0; } 运行结果:
continue: /fuzhu_control$ ./app 100 101 103 104 106 107 109 110 break: $ ./app 100 101
-
-
实例:对判断素数的程序进行完善,若用户输入的不是整数,需重新输入。
分析:假如用户输入的是字符型w,此时scanf("%d",&n) 不接收该字符,需要将w清出缓冲区,程序才可以继续运行下去。
如何判断scanf接收到的个数呢?
用一个标记来接收scanf的个数,如ret=scanf("%d", &n);若用户输入的是w,则ret=0;若用户输入的是5,则ret=1。
- 例1:使用while循环+break语句+continue语句
#include
#include int main() { int n, i, tmp; while(1){ printf("Please input n(>3):"); if(scanf("%d", &n) == 0){ if(getchar() == '#') break; else{ printf("input error!n"); continue; } } i = 2; tmp = sqrt(n); while(i <= tmp){ if(n % i == 0) break; i++; } if(i <= tmp) printf("%d not sushun",n); else printf("%d is sushun",n); } return 0; } 运行结果:
./app Please input n(>3):5 5 is sushu Please input n(>3):4 4 not sushu Please input n(>3):w input error! Please input n(>3):# ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$
- 例2:使用goto循环语句
#include
#include int main() { int n, i, tmp; while(1){ loop: printf("Please input n(>3):"); if(scanf("%d", &n) == 0){ if(getchar() == '#') return 0; else printf("input error!n"); // getchar(); goto loop; } i = 2; tmp = sqrt(n); while(i <= tmp){ if(n % i == 0) break; i++; } if(i <= tmp) printf("%d not sushun",n); else printf("%d is sushun",n); } return 0; } 运行结果:
$ ./appPlease input n(>3):w input error! Please input n(>3):5 5 is sushu Please input n(>3):# ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$
4、return语句
-
return语句的一般形式:return(<表达式>)
-
主要用于终止包含它的函数的执行
-
若终止的为主函数,则主程序结束
例子:
#include
#include int fun(){ int r = 5; return r; } int main() { int n, i, tmp; int ret; ret = fun(); printf("ret = %dn", ret); while(1){ printf("Please input n(>3):"); if(scanf("%d", &n) == 0){ if(getchar() == '#') return 0; else{ printf("input error!n"); continue; } } i = 2; tmp = sqrt(n); while(i <= tmp){ if(n % i == 0) break; i++; } if(i <= tmp) printf("%d not sushun",n); else printf("%d is sushun",n); } return 0; } 运行结果:
$ ./app ret = 5 Please input n(>3):5 5 is sushu Please input n(>3):# ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$
5、总结与思考
- 主要介绍了C语言中的辅助控制语句,包括break语句,continue语句和return语句。
- 思考:使用break语句如何跳出多层循环?
- 依次跳出内层循环和外层循环。



