C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这3种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
我们可以使用if、switch、实现分支结构,使用for、while、do while实现循环结构。
1.1 if语句
if语句的语法形式如下:
1 if(表达式)
2 语句
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行
在C语言中,0为假,非0表示真,也就是表达式的结果如果为0,则语句不执行,表达式的结果如果不是0,则语句执行。
1.2 else
如果出现多种情况的话这时候就需要if...else...语句了,语法形式如下:
1 if(表达式)
2 语句1
3 else
4 语句2
1.3 分支中包含多条语句
默认在if和else语句中默认都只控制一条语句,比如:
1 #include<stdio.h>
2 int main()
3 {
4 int age = 0;
5 scanf("%d", &age);
6 if(age >= 18)
7 printf("成年了\n");
8 printf("可以谈恋爱\n");
9 return 0;
10 }
上面的代码,你会发现输入的值不管是大于等于18还是小于18,“可以交女朋友了”都会打印在屏幕上。
这是因为if语句只能控制一条语句,就是printf("成年了\n");,if语句为真,则打印成年了,if语句为假,则不打印,对于printf("可以谈恋爱了\n");是独立存在的,不管if语句的条件真假,都会被执行。那如果我们要if语句同时控制2条语句,怎么办呢?那就要用{}将代码括起来,else后也可以跟上大括号。
1.4 嵌套if
在if else语句中,else可以与另一个if语句连用,构成多重判断。
有了嵌套if语句,就可以完成更多复杂逻辑的判断。
1.5悬空else问题
如果有多个if和else,可以记住这样一条规则,else总是跟最接近的if匹配。
1.6 switch语句
除了if语句外,C语言还提供了switch语句来实现分支结构。
switch语句是一种特殊的if.....else结构,用于判断条件有多个结果的情况。它把多重的else if改成更易用、可读性更好的形式。
switch(sxpression)
{
case value1:statement
case value2:statement
default:statement
}
上面代码中,根据表达式expression不同值,执行相应的case分支。如果找不到对应的值,就执行default分支。
注意:switch后的expression必须是整型表达式
case后的值,必须是整型常量表达式
case和后边的数字之间必须有空格
每一个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句。
所以在switch语句中break是非常重要的,能实现真正的分支效果。
当然break也不是每个case语句都有,这就得根据实际情况来看了。
default语句和case语句在switch语句中是没有顺序要求的,不过通常放在最后处理。
1.7 while循环
while和if语句非常相似。
if和while进行对比
1 if(表达式)
2 语句;
3 whlie(表达式)
4 语句;//如果循环体想包含更多的语句,可以加上大括号。
//代码1
#include<stdio.h>
int main()
{
if(1)
printf("hehe\n"); //if后面条件满足,打印一次hehe
return 0;
}
//代码2
int main()
{
while(1)
printf("hehe\n"); //while后面条件满足,死循环打印hehe
return 0;
}
这个就是他们的区别,while语句是可以实现循环效果的。
while语句的执行流程
首先上来的就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。
1.8 for循环
语法如下:
for(表达式1;表达式2;表达式3)
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
1.9 do-while
语法形式
1 do
2 语句;
3 while(表达式);
do while循环是至少执行一次的,因为它是先进入循环体,执行循环语句,再执行while后的判断表达式,为真,就会进入下一次,为假,则不再循环。
1.9 continue
是继续的意思,在循环中的作用的作用就是跳过某一次循环continue后边的代码,直接到循环的判断部分,进行下一次的判断,如果循环的调整是在continue后边的话,可能会造成死循环。
补充:break和continue可用的有while、for、do while