若排版有错误,请查看PDF版:C语言 - 03 流程控制
第一章 流程控制
一、 顺序结构
默认的流程结构。按照书写顺序执行每一条语句。
二、 选择结构 if、switch
(一) if
1. 简单使用
1) 结构1:
if(条件)
{
语句1;
语句2;
......
}
2) 结构2:
if(条件1)
{
语句1;
语句2;
......
}
else
{
}
3) 结构3:
if(条件1)
{
语句1;
语句2;
......
}
else if(条件2)
{
}
else
{
}
4) 结构4:
if (条件)
语句1;
if (条件) 语句1; 语句2; 条件成立,只会执行语句1;语句2不在选择结构内。
2. 注意
1) 同一时刻,只有一个大括号里面的代码会被执行
2) 先判断条件是否成立,0表示条件不成立
if (0)
{
printf("A\n");
}
else
{
printf("B\n");
}
结果:B
3) 比较大小时,常量值放左边,变量放右边
if (0 == a)
{
printf("a等于0\n");
}
else
{
printf("a不等于0\n");
}
4) if语句后不要写分号
if ( 5>6 );
{
printf("A\n");
}
5) 错误代码:作用域不明确
if (10 >6)
int a = 5;
如果要在if后面的语句中定义新的变量,必须用大括号{}
6) if (条件) 语句1; 语句2; 语句3;
a) 条件成立,只会执行语句1;
b) 语句2、语句3 不在选择结构内。
(二) switch
1. 简单使用
switch (数值)
{
case 数值1:
break;
case 数值2:
break;
case 数值3:
break;
default:
break;
}
1) 默认情况下,只有一个case后面的代码会被执行
2) break 作用是跳出switch,如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止
3) 如果要在case后面定义一个新的变量,必须用大括号{}包住
int main()
{
char c = '+';
int a = 10;
int b = 20;
switch (c) {
case '+':
{
int sum = a + b;
printf("和是:%d", sum);
break;
}
default:
{
int minus = a - b;
printf("差是:%d", minus);
break;
}
}
return 0;
}
2. if、switch对比
1) 很多情况可以互换
2) if用得比较多,switch只能是某个单值
三、 循环结构
(一) while
1. 简单使用
while (条件)
{
循环体
}
1) 如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立......
2) 如果一开始条件就不成立,永远不会执行循环体
3) break直接结束整个循环
4) continue结束当前的循环,进入下一次循环
5) while(1); 死循环
(二) do while
1. 简单使用
do {
} while(条件);
int i=0;//不会进入循环
while(i<0){
i++;
}
int i=0;
do{
i++;
} while(i<0);// i=1
2. do while与while
1) 很多情况下,while与do while可以互换
2) while:如果条件不成立,那么永远不会执行循环体
do while:不管条件成不成立,至少会执行一次循环体
3) 最好使用while
(三) for
1. 简单使用
for (语句1; 条件; 语句2)
{
循环体
}
1) 语句1:初始化语句
2) 语句2:增量语句(执行完循环体后再执行的语句)
3) for一开始就会执行一次语句1(整个for循环只会执行一次)
4) 判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立
2. for循环嵌套
好友列表1
好友1
好友2
好友列表2
好友1
好友2
好友列表3
好友1
好友2
for (int i =1; i<=3; i++)
{
printf("好友列表%d\n", i);
for (int j =1; j<=2; j++)
{
printf(" 好友%d\n", j);
}
}
3. 注意
1) 不要随便在for()后面写分号
for (int i=0; i<5; i++);
{
printf("哈哈\n");
}
2) 如果要在循环体中定义新的变量,必须用大括号{}包住
错误:a的作用域不明确
for (int i=0; i<5; i++)
int a = 10;
3) 错误写法
for (int i =0; i<10; i++, a++)//报错a没有定义
{
// a只能用在循环体{}中
int a = 10;
}
4) 死循环
for(;;);
5) for循环体内部变量的作用域
for (int i=0; i<4; i++)
{
int i = 10; // i的作用域为{}内,与增值语句中的i不同
printf("%d\n", i);
}
/* 结果为:
10
10
10
10
*/
break
1. 使用场合
1) switch语句:退出整个switch语句
2) 循环结构:退出整个循环语句
2. 注意
只对最近的循环结构有效
continue
1. 使用场合
循环结构:结束当前这次的循环体,进入下一次循环体
2. 注意
只对最近的循环体有效
循环结构的选择
一般优先使用for循环,然后再考虑while,最后do while。