首页 > 代码库 > 【黑马程序员】————流程控制
【黑马程序员】————流程控制
一、 流程控制
顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
二、 选择结构-if
简单使用
1.if的第1种结构
1 if(条件)2 {3 语句1;4 语句2;5 ......6 }
2.if的第2种结构
1 if(条件1) 2 { 3 语句1; 4 语句2; 5 ...... 6 } 7 else 8 { 9 10 }11
3.if的第3种结构
1 if(条件1) 2 { 3 语句1; 4 语句2; 5 ...... 6 } 7 else if(条件2) 8 { 9 10 }11 else if(条件3)12 {13 14 }15 else if(条件4)16 {17 18 }19 else 20 {21 22 }
4.if的第4种结构
1 if (条件)2 语句1;
注意:1>比较大小时,常量值放左边,变量放右边
2>注意赋值运算符,不要写成两个=
3>if语句后面不要写;
4>下面的代码是错误的:作用域不明确
if (10 > 6)
int a = 5;
// 如果要在if后面的语句中定义新的变量,必须用大括号{}
//printf("%d\n", a);
复合条件
上课时间的取值范围(9~12 || 14 ~17)
陷阱
if(a!=0) { a不是0;} else {a是0;}
if (a); { }
if (a=0)
a == 0;
if (10) int a = 9;
三、 选择结构-switch
1. 简单使用
switch(表达式) { case 数值1: break; … default: break;}
举例
1 int a = 10; 2 3 switch (a) { 4 5 case 0: 6 7 printf("这是一个0"); 8 9 break;10 11 case 5:12 13 printf("这是一个5");14 15 break;16 17 case 10:18 19 printf("这是一个10");20 21 break;22 23 default:24 25 printf("什么也不是");26 27 break;
注意:1>break:退出整个switch语句
2>如果case后面没有break,就会执行后面所有case中的语句,直到遇到break为止
3>如果要在case后面定义新的变量,必须用大括号{}包住
2. if和switch的对比
1> if语句能完成的功能,switch并不一定能完成
2> 在有些情况下,if语句和switch语句可以互换
3> switch能完成的功能,if语句都能完成
四、 循环结构-while
1. 简单使用
while (条件)
{
循环体
}
1>确定需要重复执行的操作
2>确定约束条件
continue:输出5次休息一下
break的使用:某次的时候停止循环
2. 特点
1>如果一开始条件就不成立,永远不会执行循环体
2>如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立.....
break
直接结束整个while循环
continue
结束当前的循环体,进入下一次循环体的执行
3. 习题
1> 提示用户输入一个正整数n,计算1+2+3+…+n的和
2> 提示用户输入一个正整数n,计算1-2+3-4+5-6+…+n的和
4. 陷阱
while(条件);
while(1); // 最简单的死循环
五、 循环结构-do while
特点:一定会执行一次循环体
while和do while循环对比
1>很多情况下,while和do while可以互换
2>while特点:如果一开始的条件不成立,永远不会执行循环体
do while特点:不管一开始的条件是否成立,至少会执行一次循环体
3>最好使用while
1 int i=0;2 while(i<0){3 i++;4 }5 6 int i=0;7 do{8 i++;9 } while(i<0);
六、 循环结构-for
1. 简单实用
for (语句1; 条件; 语句2)
{
循环体
}
语句1:初始化语句
语句2:增量语句(执行完循环体后再执行的语句)
1>for一开始就会执行一次语句1(整个for循环只会执行一次)
2>判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立
2. for循环嵌套
好友列表1
好友1
好友2
好友列表2
好友1
好友2
好友列表3
好友1
好友2
3. 陷阱
1> 死循环 for(;;);
2> for循环体内部变量的作用域
3> 作用域混淆
for (int i = 0; i<5; i++) int a = 10;
4> 不要随便在for()后面写分号
5> 如果要在循环体中定义新的变量,必须用大括号{}包住
4. while循环和for循环的比较
可以互换
for循环的变量可以及时回收
1. 习题
1> 提示用户输入一个正整数n,如果n5,就输出下列图形,其他n值以此类推
1 #include <stdio.h> 2 3 int main() 4 { 5 // 1.定义一个变量存储用户输入的值 6 int n = 0; // 一定要初始化 7 8 // 2.判断n值合不合理 9 while (n <= 0)10 {11 // 2.1 提示用户输入正整数12 printf("请输入一个正整数:\n");13 14 // 2.2 接收输入的数据15 scanf("%d", &n);16 }17 18 // 3.输出图形19 for (int i = 0; i<n; i++)// 有多少行20 {21 22 for (int j = 0; j<n-i; j++)23 { // 每一行有多少个24 printf("*");25 }26 27 printf("\n");28 }29 30 return 0;31 }
2> 输出九九乘法表
七、 break和continue
1. break
1.使用场合
1> switch语句:退出整个switch语句
2> 循环结构:退出整个循环语句
* while
* do while
* for
2.注意点
只对最近的循环结构有效
2. continue
1.使用场合
循环结构:结束当前这次的循环体,进入下一次循环体
* while
* do while
* for
2.注意点
只对最近的循环结构有效