C语言是结构化的程序设计语言,这里的结构是顺序结构、选择结构、循环结构。

我们可以用if语句和switch语句来实现C语言中的分支结构

分支结构

1.if语句

if语句的用法:

if(表达式) 语句;

如果表达式成立,则执行语句,表达式不成立,则不执行语句。

例子:判断一个数是否为奇数

#include int main(){int a;scanf("%d",&a);if(a % 2 == 1)printf("a = %d 为奇数\n",a); return 0;}

这个代码什么意思呢?

我们先定义了一个a变量,然后把从键盘上输入的数存入到 a变量中,进入到if语句中进行判断,如果输入的数可以被2取模,余1 则这个数为奇数并打印这个数。

运行结果:

我们可以看到运行出来的结果是33为奇数。

所以if语句是用来判断的

1.1if…else

if…else的用法

if(表达式)语句;else语句;

例子:输入一个数判断是奇数还是偶数。

#include int main(){int a;scanf("%d",&a);if(a % 2 == 1)printf("a = %d 为奇数\n",a); elseprintf("a = %d 为偶数\n",a);return 0;}

这个代码什么意思呢?

我们定义了一个a变量,然后把从键盘上输入的数存入到 a变量中,进入到if语句中进行判断,如果输入的数可以被2取模,余1 则这个数为奇数并打印这个数,反之则如果不能被2取模,余1则这个数为偶数并打印这个数。

运行结果:

我们可以看到两个运行的结果是不一样的,第一张图是 a = 43 为奇数,而第二张图是 a = 44 为偶数,所以if…else是如果一条语句成立,则执行这条语句,不成立,则执行另外一条语句。

1.if…else语句默认只能控制一条语句

如下面这条代码:

#include int main(){int a;int max;int min;max = min = 0;scanf("%d",&a);if(a > max)max = a;printf("max = %d\n",max);elsemin = a;printf("max = %d\n",min);return 0;}

运行结果:

我们可以看到代码生成的报错了,显示没有匹配if的非法else。

所以这样的写发则是错误的写法,正确的写法应该是带上英文模式下的{}。

如下:

#include int main(){int a;int max;int min;max = min = 0;scanf("%d",&a);if(a > max){max = a;printf("max = %d\n",max);}else{min = a;printf("max = %d\n",min);}return 0;}

运行结果:

我们可以看到当加上了花括号之后并未报错,所以if…else语句后面只能跟一条语句,要多条语句时需要加上花括号。

2.if…else语句 else跟最近的if匹配

例子:

#include int main(){int a;int b;a = 2;b = 3;if(a == 1)if(b == 3)printf("hehe\n");elseprintf("haha\n");return 0;}

运行结果:

我们可以看到代码没有打印任何东西,所以else只跟最近的if相匹配。

2.switch语句

switch语句的用法:

switch(表达式){ case 常量1:语句; case 常量2:语句;}

switch语句相当于一个开关。

举例:

#include int main(){int a;scanf("%d", &a);switch (a){case 1:printf("hehe\n");break;case 2:printf("haha\n");break;case 3:printf("xixi\n");break;}return 0;}

运行结果:

我们可以看到当我输入0时显示的是hehe,输入1时显示的haha,所以switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句。

1.switch语句中的default关键词

我们可以看到关键词default在switch语句中作缺省情况标签的声明,什么意思呢?

我们来看下面的一串代码

#include int main(){int a;scanf("%d", &a);switch (a){ case 0:printf("hehe\n");break; case 1:printf("haha\n");break; case 2:printf("xixi\n");break; default: printf("嘿嘿\n");}return 0;}

在原有的代码上增加了关键词default,我们来看运行结果。

运行结果:

当输入的数没有在switch语句里的数时,则打印了嘿嘿,所以default在switch语句中是默认值的作用。

2.switch语句有break,没有break的区别

我们来看一个例子

我们来看两张运行的结果,输入的同样是0为什么运行的确实不一样的结果呢,break语句在switch语句又起到什么作用呢?

我们可以看到break语句在switch语句中起到终止的作用,所以我们在语句后面没有加break语句时,switch语句会一直执行,直到遇见了break语句才会终止代码的运行。

C语言官网

C语言官网:C 语言 – cppreference.com