一、分支
1、if语句
if语句是C语言中最简单的分支语句,下面是一个简单的if语句。
#include <stdio.h>
int main()
{
if(1)
printf("is ture");
}
if下面语句执行的条件为表达式中的成立(即为真),不成立(为假)则跳过语句。在C语言中,0代表假,非0为真,其中包括非零数、数组、字符等等……
即使是空数组,C语言也判定为真。
(1)else
在这里,我们引入if语句中另一个重要组成部分——else。else语句用于if后面表示式不成立时的操作,如下
if后面表达式为假,故if后语句不执行,则执行else后的语句。
(2)else if
在if语句中还有一个重要组成部分else if,常见例子如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int grade;
scanf("%d", &grade);
if(0<=grade && grade<50)
printf("D");
else if (grade<= 60)
printf("C");
else if (grade <= 80)
printf("B");
else if (grade < 100)
printf("A");
else if (grade == 100)
printf("GREAT!");
else
printf("请输入正确的成绩");
}
运行过程中的流程图如上。
if与else if的联用,构成了嵌套if语句。
(3)常见错误
下面我们在刚开始接触if语句时,很容易遇到的两个问题:
1、
常见情况为
原因是if语句后面有多条语句且没有使用“{}”,正确处理方式为将if语句后的语句用“{}”括起来。
2、悬空else
问题情况如下:
代码运行结果为空,这是因为else总是与其最近的id语句匹配
2、switch语句
如下为一个简单的例子:
#include <stdio.h>
int main()
{
int a = 1;
switch (a)
{
case(1):
printf("a=1\n");
break;
case(2):
printf("a=2\n");
break;
case(3):
printf("a=3\n");
break;
case(4):
printf("a=4\n");
break;
}
}
运行结果为“a=1”
若删掉所有break,则程序会从入口出开始向下挨个执行语句。
同理
程序会在满足条件时进入语句,并向下执行,直到遇到break。
二、循环
1、while循环
常见代码如下:
#include <stdio.h>
int main()
{
int a = 4;
while (a > 0)
{
printf("hello world\n");
a--;
}
}
while语句在运行的过程中,会先判断表达式的真或假,若为真,则运行大括号中的语句,为假则跳过。
(1)死循环
会造成栈溢出
1、while语句内部未对可执行变量进行操作,如:
2、在while语句中重新给变量赋值,且所赋值可满足代码运行,如:
从代码中我们可以看到,在经过a>0的判断后,进入到while语句中,此时变量a被赋值3,后经语句“a--;”后,a的值变为2,仍满足a>0,故循环继续,进入循环,a又被赋值3,以此下去,代码会进入死循环。
2、for循环
与whil循环不同的是,for循环是在语句执行完后对变量进行操作,操作完成后再开始新一轮的判断……
for循环中变量可有多种赋值形式:
1、
2、
3、
3、do while 循环
对于do while循环,不论变量是否符合判断语句,都会先执行一次程序后在进行判断。
4、for、while、do while适用性
for循环适用于已知循环次数的循环;
while循环适用于未知循环次数的循环;
do while循环适用于至少运行一次的循环;
三、break和continue
1、break
break语句可用于终止当前循环,使程序向后运行
#include<stdio.h>
int main()
{
int a=3;
for(a;a>0;a--)
{
printf("a\n");
break;
}
}
但值得注意的是,在面对嵌套循环语句时,break仅用于跳出当前循环
2、continue
continue语句用于跳出本轮循环
与break语句相似,continue也在面对嵌套循环时也仅可从当前循环跳到下一轮循环