目录
在日常生活中,我们可以把一些事务抽象成三种结构,即“顺序结构”,“分支结构”,“循环结构”。在C语言中就有这三种结构,其中用 "if" "else"来实现分支,“while” ,“for”,"do-while"来实现循环。在本文将详解分支和循环,以及"break","continue","goto"在其中的应用。
1.if语句
1.1 if语句:
if(表达式)
{
语句;
}
在 if语句中,若表达式的结果为真,则执行if后面的语句。若表达式为假,则跳过if后面的那条语句开始执行。
注:在C语言中,0为假,非0为真。
例如:1,7,-1都是真。
1.2 else语句:
if(表达式)
{
语句;
}
else
{
语句
}
在"if - else"语句中,当if后面的表达式为假时,则跳过if后面的语句,开始执行else后面的语句。
1.3 分支中包含多条语句
if(表达式)
语句1;
语句2;
默认情况下,if 和 else 语句只控制一条语句。入上述例子中,当表达式为真时,执行两条语句。反之只执行语句2。如果我们想要表达式为真时,执行多条语句,那我们就在if后面加上" {} ",
如下例:
if(表达式)
{
语句1;
语句2;
......
}
else
语句;
1.4 嵌套if
if(表达式)
{
if(表达式)
语句;
else
语句;
}
else
语句;
在 if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。如我们输入一个数,它是不是正整数,如果是那么是奇数,还是偶数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num>0)
{
if(num%2 == 0)
printf("偶数\n");
else
printf("奇数\n");
}
else
{
printf("输⼊的值是负数\n");
}
return 0;
}
1.5 悬空else问题
if(表达式)
if(表达式)
语句;
else
语句
在C语言中,else总是与它最靠近的if匹配。注意不是按照对齐!
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
上述例子中,else会和第二个if相匹配,如果我们想要和第一个if匹配,那么我们就要加上" {} "
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("hehe\n");
}
else
printf("haha\n");
return 0;
}
2.switch语句
switch(整形表达式)
{
case 整形常量表达式: //case 1
语句;
case 整形常量表达式: //case 2
语句;
......
default:
语句;
}
我们可以简单的理解为case就是switch语句的入口,当我们的整型表达式满足case后面的整形常量表达式时,就进入开始执行后面的语句。
但我们必须注意,我们执行后,在哪结束呢?实际上当我们满足case后面的表达式时,就开始执行后面的所有语句,直至全部执行跳出switch语句。
如果我们想要只执行case1后面语句,我们只需要在case 1后面的语句中的最后一条加上 "break"
switch(整形表达式)
{
case 整形常量表达式: //case 1
语句;
break;
case 整形常量表达式: //case 2
语句;
break;
......
default:
语句;
}
3.关系操作符
• > 大于运算符
• < 小于运算符
• >= 大于等于运算符
• <= 小于等于运算符
• == 相等运算符
• != 不相等运算符
4.逻辑操作符
4.1 逻辑取反运算符 !:
逻辑取反运算符(改变单个表达式的真假)。
4.2 与运算符 &&:
与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
4.3 或运算符 ||:
或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。
4.4 短路:
C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
5.while循环
循环赋值语句;
while(循环判断语句)
{
循环调整语句;
}
下图是 while循环执行流程图
6.do-while循环
do
{
语句;
}while(表达式);
下面是 do - while 循环执行流程图
7.for循环
for(表达式1; 表达式2; 表达式3)
{
语句;
}
下面是for循环执行流程图
8.循环的嵌套
下面我们用一个经典的C语言例题,来讲解循环的嵌套。
#include <stdio.h>
int main()
{
int i = 0;
//循环产⽣100~200的数字
for(i=100; i<=200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for(j=2; j<i; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%d ", i);
}
return 0;
}
9.break和continue语句
9.1break
break的作用是永久跳出break属于的循环。
9.2 continue
continue的作用是跳过continue后面的语句,开始执行下一次循环。
10.goto语句
C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
printf("hehe\n");
goto next:
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}