循环结构介绍
1、循环结构概述
1.1 概述
循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某个程序段。直到条件不成立为止,给定的条件称为循环条件,反复执行的断码断称为循环体。
循环体简单来说就是:循环式一次又一次的执行相同的代码。
1.2 构成循环结构的几个条件
1)循环控制条件
2)循环体
3)能够让循环体结束的语句(递增,递减,真,假等)
1.3 while循环介绍及基本格式
1.3.1 while循环的格式
1.3.2 while循环的特点
1.4 while使用举例
- int a = 5;//存储要执行的次数
- //(1)循环控制条件
- while (a > 0 ) {
- a--;//能够让循环控制条件为假的语句
- printf("a = %d \n",a);//循环体
- }
复制代码
1.5 while循环使用陷阱--死循环
1.5.1
例如: int a = 5;
- while(a >0){
- printf("a = %d \n",a);
- }
复制代码
此处没有能够让循环控制条件为假的语句,因此a > 0一直为真,进入了死循环
1.5.2 空语句死循环
例如 while(1);
1.5.3 不要造成死循环,会严重影响到系统性能,甚至会占尽内存导致机器挂掉
1.6 控制游戏方向
- int loop = 1;
- //定义一个变量
- char ch;
- //写一个死循环
- while (loop) {
-
- scanf("%c", &ch);
- if (ch == '\n') {
- continue;
- }
- switch (ch) {
- case 'w':
- case 'W':
- printf("Direction: Up\n");
- break;
- case 'S':
- case 's':
- printf("Direction: Down\n");
- break;
- case 'A':
- case 'a':
- printf("Direction: Right\n");
- break;
- case 'D':
- case 'd':
- printf("Direction: Left\n");
- break;
-
- default:
- printf("Quit\n");
- loop = 0;
- break;
- }
- }
复制代码
1.7 while循环 猜数字游戏
- int answer = arc4random_uniform(1000) + 1;// 1 - 1000的随机数
-
- int i = 1;
- int guess = 0;
-
- while (i < 11) {
- printf("input a numbner(between 1 and 1000), %d times left: " , 10 - i);
- scanf("%d", &guess);
-
-
- if(answer == guess){
- printf("Right!\m");
- break;
- } else if(answer > guess){
- printf("Too small\n");
- }else{
- printf("Too big\n");
- }
- if(++i > 10){
- printf("Stupid, over!\n");
- break;
- }
- }
- printf("Answer : %d", answer);
复制代码
1.8 while循环使用时注意事项
1.8.1 while循环表达式问题
如:
- int i = 1, sum = 0;
- while(i++ <= 5){ //i++ 后值变成2
- sum += i;//第一次加i的时候,i = 2;
- }
复制代码
1.8.2 死循环:任何数值都有真假性,
这个也是死循环,因为-1是非零的
1.8.3 当一个变量与一个常量惊醒 == 或 != 的时候,通常把常量写在前面,避免少写一个等号,变成了赋值运算,导致死循环
如 int num = 4;
1.8.4如果while循环只有一句话,此时可以省略大括号
如:- while(a > 0)printf("HH");
复制代码
2.do .... while循环的介绍和使用
2.1 do ...while循环的基本格式
- do {
- 语句1;
- 语句2;
- }while(条件);
复制代码
2.2 while 与do...while的区别
2.2.1 当条件第一次不为假的时候,两者无区别
2.2.2 while是当型循环:当条件满足的时候,再去执行循环体
do... while是直到 循环:先执行循环体,然后判断条件,直到条件为假就结束
例:
- int a = 0;
-
- while (a) {
- printf("While :a = %d\n",a--);
- }
-
- a = 10;
-
- do{
- printf("Do While :a = %d\n",a--);
- }while(a);
复制代码
打印结果:Do While :a = 0
|
|