初识C语言—— 选择结构程序设计

文章目录

  • 一、if语句
  • 二、if语句的基本形式
    • 1.if语句形式
    • 2.if...else语句形式
    • 3.else if语句形式
  • 三、if的嵌套形式
  • 四、条件运算符
  • 五、switch语句
    • 1switch语句的基本形式
    • 2.多路开关模式的switch语句
  • 六、if...else语句和switch语句的区别
  • 七、总结

一、if语句

在C语言程序中,我们有时候需要完成一些不同的判断操作,这是我们利用的就是if语句。
if语句就如同十字路口的红绿灯一样,通过判断不同的条件,决定是否进行操作

二、if语句的基本形式

在if语句中,首先判断表达式的值,然后根据该值的情况控制程序流程。表达式的值不等于0就是真值,反之为假值。if语句有if、if…else、else…if这三种形式,下面我们将会为大家一一介绍。

1.if语句形式

if语句通过对表达式进行判断,根据判断的结果决定是否进行相应的操作。

if语句的一般形式如下:

if(表达式)
{
	语句
}

其语句的执行流程图如下:
初识C语言—— 选择结构程序设计_第1张图片
if后面的括号中的表达式就是要继续判断的条件,后面的语句部分则是对应的操作。如果if判断括号中的表达式为真,就执行后面语句的操作,反之则不执行。下面是一个简单的例子

if(num == 1)
{
	printf("Hello CSDN");
}

这行代码的含义其实很简单,我们判断变量num == 1的表达式。如果条件成立,那么我们就执行下列的语句,打印处”Hello CSDN“,反之如果为假,则不进入if语句内部执行语句。

2.if…else语句形式

在C语言中,我们除了可以指定在条件为真时执行某些语句之外,我们还可以在条件为假是执行另外一段代码。这在C语言中我们可以利用else语句来完成,其一般形式如下:

if(表达式)
	语句块1;
else
	语句块2;

其语句的执行流程图如下所示:
初识C语言—— 选择结构程序设计_第2张图片
在if后的括号判断表达式的结果,如果判断的结果是真值,则执行紧跟在if后的语句块中的内容:如果判断的结果为假值,则执行else语句后的语句块内容。简单来讲就是,当if语句检验的条件为假的时候,就执行相应的else语句后面的语句或者语句块,我们可以举一个小例子:

if(price)
{	
	printf("the price is ture");
}
else
{
	printf("the price is false");
}

在上面代码中,如果if判断变量price的值为真,则执行if后面的语句块,如果if判断的结果为假值,则执行else下面的语句块。

3.else if语句形式

利用if和else语句的组合我们还可以实现else if语句,这是对一系列互斥的条件进行检验,一般形式如下:

if(表达式1)
{
	语句1;
}
else if(表达式2)
{
	语句2;
}
...
else if(表达式m)
{
	语句m;
} 
else(表达式n)
{
	语句n;
}

初识C语言—— 选择结构程序设计_第3张图片
由流程图我们不难看出,首先对if语句中的表达式1进行判断,如果结果为真值,则执行后面跟着的语句1,然后跳过else if语句和else语句,反之如果判断为假值,则判断表达式2,接下来就都是一样的套路了,当所有的判断都不成立的时候,即都为假值是,就会执行else后的语句块。
一起来看这个例子:

if(num == 1)
{
	...   //语句块1
}
else if(num == 2)
{
	...   //语句块2
}
else if(num == 3)
{
	...   //语句块3
}
else
{
	...   //语句块4
}

上述代码的含义就是使用if语句判断变量num的值是否为1,如果为1,则执行后面语句块中的内容,然后跳过后面else if和else语句的判断与执行。如果不为1,那么接下来会判断num和2之间的关系,如果判断结果为真,则进入语句块2执行,后续也是一样的流程,如果都判断不成立,则会执行最后else内的语句块。

三、if的嵌套形式

if语句中又含有一个或多个if语句,这种情况我们就将其称为if语句的嵌套
一般形式如下:

if(表达式1)
{
	if(表达式2)
	{
		语句块1
	}	
	else
	{
		语句块2
	}
}
else
{
	if(表达式3)
	{
		语句块3
	}	
	else
	{
		语句块4
	}
}

使用if语句的嵌套形式,可对判断的条件进行细化,然后在进行相应的操作。
这里就不举额外的实例了,大家可以自己尝试一下,其实就是个举一反三的过程,你懂了if语句的正确使用,那么学会使用基础的嵌套也自然不在话下。

四、条件运算符

我们在使用if语句的时候,可以通过表达式判断表达式为”真“或”假“,从而执行相应的表达式,举个小例子

if(a > b)
{
	min = b;	
}
else
{
	min = a;
}

上面的代码我们就可以使用条件运算符"?:"来进行简化,例如:

min = (a > b) ? b : a;

条件运算符可对一个表达式的值的真假情况进行检验,然后根据检验结果返回另外两个表达式中,其一般形式如下:

表达式1 ? 表达式2 : 表达式3;

在运算中,首先会对第一个表达式的值进行检验,如果值为真,则返回第二个表达式的结果值。如果表达式为假,则返回第三个表达式的结果值。例如上面那个代码,实现判断表达式a>b,如果判断为真,则将b的值赋给min变量,如果判断为假,则把a的值赋给max变量。

五、switch语句

从上文的介绍我们可以知道,if语句只有两个分支可供选择,而我们在解决实际问题中常常需要用到多分支的选择。当然,如果选择用if语句层层嵌套,也可以实现这一目的,但这容易使得程序冗杂,可读性差。这个时候,switch语句在处理多分支选择情况的优势就体现出来了。

1switch语句的基本形式

switch语句是多分支选择语句。例如,我们现在要检测某个变量的所有可能取值,我们就可以使用switch语句,如下所示:

switch(表达式)
{
	case 1:
		语句块1case 2:
		语句块2;
	case 3:
		语句块3;
	case 4:
		语句块4;
	...
	case n:
		语句块n;
	default:
		默认情况语句块;
}

流程图如下:
初识C语言—— 选择结构程序设计_第4张图片
由流程图我们可以知道,switch后面括号的表达式就是要进行判断的条件。在switch的语句块中,使用case关键字表示检验条件符合的各种情况,其紧跟后的语句就是相关的操作了。此外,我们还可以看到有一个default的关键词,这个关键字和else…if语句中的else异曲同工之妙,如果没有符合条件的情况,那么就会执行default后的默认情况语句。
我们可以来看一段实例:

switch(num)
{
	case 1:
		printf("Java\n");
		break;
	case 2:
		printf("Python\n");
		break;
	case 3:
		printf("MySQL\n");
		break;
	default:
		printf("Error\n");
		break;
}

其中switch判断变量num的值,利用case语句检验num值的不同情况。假设返回的是2,则执行case为2时的情况,执行后通过break跳出switch语句,不再执行switch下面的代码。

注:每个switch语句只能有一个default语句,而且default语句是可以省略的。

2.多路开关模式的switch语句

这里直接用语言描述过于抽象,我们先来看一段代码:

switch(表达式)
{
	case 1:
		语句1
		break;
	case 2:
	case 3:
		语句2
		break;
	...
	default:
		某人语句
		break;
}

我们可以看到,如果在case2后不使用break语句,那么符合检验时与case3检验时的效果是一样的。也就是说,使用多路开关模式使得多种检验条件使用一种解决方式。

六、if…else语句和switch语句的区别

通过上文的介绍,我知道if…else语句以及switch语句都用于根据不同的情况检验条件并做出相应的判断。那么二者之间有无区别呢?接下来我们会从二者的语法和效率两方面进行比较。
①.语法的比较
if需要配合else关键字来使用,switch需要配合case关键字来使用:if语句是先对条件进行判断,switch语句是后进行判断。
②.效率的比较
if…else结构对于少量的检验,判断速度是比较快的,但是随着检验的增长,判断的速度会越来越慢,其中默认情况是最慢的。
而switch结构中,除了default默认情况之外,所有的case检验速度都是相同的,default默认情况比其他情况都要快。

七、总结

本文介绍了选择结构的程序设计方式,包括if语句和switch语句,同时对if…else语句和else…if语句的形式进行了分析,还区分了if…else语句和switch语句的差异。希望本文对大家有所帮助,一键三连哦!

你可能感兴趣的:(初识C语言,c语言,c++)