一,分支语句
面对一个个分支和选择,我们就会用到两种分支语句
if
语法结构:
- 单分支:
if (条件)
结果1
else
结果2- 多分支
if(条件1)
结果1
else if(条件2)
结果2
else
结果3
多分支可以一直叠加else if
注意事项:
- if,else,else后最好加大括号{},这样可以有效区分代码块
- else和if的匹配为就近原则
- 书写条件时
=赋值
==等于
在if函数中,如果需要在条件式中用到等于号,记得是==
switch
switch这种分支函数一般用于多分支情况
语法结构:
switch(整形)
{
case 整形1:语句1;break;
case 整形2:语句2;break;
case 整形3:语句3;break;
.............(可以继续叠加)
}
!!!括号中只能放整形和枚举类型,不能放浮点型
也有多条件对应一结果,为了方便,可以这样写
switch(整形)
{
case 整形1:
case 整形2:
case 整形3:语句1;break;
case 整形4:
case 整形5:
case 整形6:语句2;break;
.............(可以继续叠加)
}
break:
相信大家都注意到了,语句中每种情况后会跟一个break,它是为了在达成一种情况后,及时跳出分支,避免执行后面的语句
举例说明:
int input=0; scanf("%d", &input); switch (input) { case 1:printf("hello"); case 2:printf("world"); }
我们为input赋值为1,本应该输出hello,但是本应该是case 2的结果也跟在了后面,这就是没有在一个语句后break导致后面的分支也一起被顺下来了。
但是我们为input赋值2,结果正确输出了world,因为2后面没有分支了,switch正常结束了
下面我们书写正确例子
int input=0; scanf("%d", &input); switch (input) { case 1:printf("hello"); break; case 2:printf("world"); break; }
default:
如果出现不匹配所有case的情况怎么办呢?
就可以用到default,包括所有非case情况
switch(input)
{
case 1:语句1;break;
case 2:语句2;break;
case 3:语句3;break;
default:语句4;break;
}
二,循环语句
不达条件不结束循环
只要在条件内一直循环
while
语法结构:
while(表达式)
循环语句;
break和continue:
- break:结束循环
无论后面还有多少次循环,break一出,当地跳出
一般与条件语句连用
比如满足一个条件,就会执行break语句彻底跳出循环- continue:结束本次循环
跳出本次循环,执行下次循环
for
for循环一般用于,知道条件范围
语法结构:
for(表达式1;表达式2;表达式3;)
表达式1:初始化
表达式2:条件判断
表达式3:调整
举例说明:
int i = 0; for (i = 1; i <= 100; i++) { printf("%d ", i); }
结果:
break和continue:(同上)
- break:结束循环
无论后面还有多少次循环,break一出,当地跳出
一般与条件语句连用
比如满足一个条件,就会执行break语句彻底跳出循环- continue:结束本次循环
跳出本次循环,执行下次循环
do while
语法结构:
do
{
循环语句;
}while(表达式);
和while不同的是,while在当前循环的首部判断是否执行循环,do while在上次循环的尾部判断是否执行下次循环
特点:至少执行一次(因为它在尾部判断条件)
break和continue:(同上)
- break:结束循环
无论后面还有多少次循环,break一出,当地跳出
一般与条件语句连用
比如满足一个条件,就会执行break语句彻底跳出循环- continue:结束本次循环
跳出本次循环,执行下次循环