初识C语言之条件结构篇——带你认知编程世界的逻辑之美!

目录

IF语句

if语句

IF语句的基本的形式

if…else语句形式

else if语句形式

IF嵌套形式

if的嵌套形式

条件运算符

switch语句

switch语句的基本形式

多路开关模式的switch语句

if else语句和switch语句的区别

选择结构程序应用

每文一语


IF语句

if语句

在日常生活中,为了使交通畅通有序,一般会在路口设立交通信号灯。在信号灯显示为绿色时车辆可以行驶通过,当信号灯转为红色时车辆就要停止行驶。可见,信号灯给出了信号,人们通过不同的信号进行判断,然后根据判断的结果进行相应的操作。

在C语言程序中,想要完成这样的判断操作,利用的就是if语句。if语句的功能就像路口的信号灯一样,根据判断不同的条件,决定是否进行操作。

据说第一台数字计算机是用来进行决策操作的,使得之后的计算机都继承了这项功能。程序员将决策表示成对条件的检验,即判断一个表达式值的真假。除了没有任何返回值的函数和返回无法判断真假的结构函数外,几乎所有表达式的返回值都可以判断真假。

IF语句的基本的形式

if语句通过对表达式进行判断,根据判断的结果选择是否进行相应的操作。if语句的一般形式为:

if(表达式)  语句

其语句执行流程如图所示。

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第1张图片

【实例6.1】 使用if语句模拟信号灯指挥车辆行驶。在本实例中,为了模拟十字路口上信号灯指挥车辆行驶,要使用if语句判断信号灯的状态。如果信号灯为绿色,则说明车辆可以行驶通过,通过输出语句进行信息提示说明车辆的行动状态。

#include
int main()
{
	int iSignal;	/*定义变量表示信号灯的状态*/
	printf("the Red Light is 0,the Green Light is 1\n");/*输出提示信息*/
	scanf("%d",&iSignal);	/*输入iSignal变量*/
	if(iSignal==1)	/*使用if语句进行判断*/
	{
		printf("the Light is green,cars can run\n");			/*判断结果为真时输出*/
	}
	return 0;
}

【实例6.2】 完善if语句的使用。原程序中仅对绿灯情况下做出相应的操作,为进一步完善信号灯为红灯时的操作,在程序中再添加一次if语句对信号灯为红灯时的判断,并且在条件成立时给出相应的操作。

#include
int main()
{
	int iSignal;	/*定义变量表示信号灯的状态*/
	printf("the Red Light is 0,the Green Light is 1\n");/*输出提示信息*/
	scanf("%d",&iSignal);	/*输入iSignal变量*/
	if(iSignal==1)		/*使用if语句进行判断*/
	{
		printf("the Light is green,cars can run\n");/*判断结果为真时输出*/
	}
	if(iSignal==0)	/*使用if语句进行判断*/
	{
		printf("the Light is red,cars can't run\n");/*判断结果为真时输出*/
	}
	return 0;
}

if…else语句形式

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

if(表达式)

  语句块1;

else

  语句块2;

其语句执行流程如图所示。

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第2张图片

【实例6.3】 使用if…else语句进行选择判断。在本实例中,使用if…else语句判断用户输入的数值,输入的数字为0表示条件为假,输入的数字为非0表示条件为真。

#include
int main()
{
	int iNumber;		/*定义变量*/
	printf("Enter a number\n");	/*显示提示信息*/
	scanf("%d",&iNumber);	/*输入数字*/
	if(iNumber)	/*判断变量的值*/

	{	
		/*判断为真时执行输出*/
		printf("the value is true and the number is: %d\n",iNumber);
	}

	else	/*判断为假时执行输出*/
	{
		printf("the value is flase and the number is: %d\n",iNumber);
	}
	return 0;
}

【实例6.4】 使用if…else语句得到两个数的最大值。本实例要实现的功能是比较两个数值的大小,这两个数值由用户输入,然后将其中相对较大的数值输出显示。

#include
int main()
{
	int iNumber1,iNumber2;		/*定义变量*/
	printf("please enter two numbers:\n");	/*信息提示*/

	scanf("%d%d",&iNumber1,&iNumber2);	/*输入数据*/

	if(iNumber1>iNumber2)	/*判断iNumber1是否大于iNumber2*/
	{
		printf("the bigger number is %d\n",iNumber1);
	}
	else	/*判断结果为假,则执行下面语句*/
	{
		printf("the bigger number is %d\n",iNumber2);
	}
	return 0;
}

【实例6.5】 使用if…else语句模拟信号灯。多数路口的信号灯还有一个黄灯,是用来提示车辆准备行驶或者停车的。6.2.1节使用if语句模拟信号灯,在本实例中使用if…else语句进一步完善这个程序,使得信号灯具有黄灯相应的功能。

#include
int main()
{
	int iSignal;	/*定义变量表示信号灯的状态*/
	printf("the Red Light is 0,\nthe Green Light is 1,\nthe Yellow Light is other number\n");   /*输出提示信息*/
	scanf("%d",&iSignal);		/*输入iSignal变量*/
	if(iSignal==1)		/*当信号灯为绿色时*/
	{
		printf("the Light is green,cars can run\n");/*判断结果为真时输出*/
	}
	if(iSignal==0)	/*当信号灯为红灯时*/
	{
		printf("the Light is red,cars can't run\n");	/*判断结果为真时输出*/
	}
	else	/*当信号灯为黄灯时*/
	{
		printf("the Light is yellow,cars are ready\n");
	}
	return 0;
}

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第3张图片

else if语句形式

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

if(表达式1) 语句1

else if(表达式2) 语句2

else if(表达式3) 语句3

  …

else if(表达式m) 语句m

else 语句n

else if语句执行流程如图

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第4张图片

IF嵌套形式

if的嵌套形式

在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:

if(表达式1)

  if(表达式2)  语句块1

  else  语句块2

else

  if(表达式3)  语句块3

  else  语句块4

使用if语句嵌套的形式功能是对判断的条件进行细化,然后进行相应的操作。

这就好比人们在生活中,每天早上醒来的时候想一下今天是星期几,如果是周末就是休息日,如果不是周末就要上班;同时,休息日可能是星期六或者是星期日,星期六就和朋友去逛街,星期日就陪家人在家。

根据这个比喻来看一下上述一般形式表示:if语句判断表达式1就像判断今天是星期几,假设判断结果为真,则用if语句判断表达式2,这就好像判断出今天是休息日,然后去判断今天是不是周六;如果if语句判断表达式2为真,那么执行语句块1中的内容。如果不为真,那么执行语句块2中的内容。就比如,如果为星期六就陪朋友逛街,如果为星期日就陪家人在家。外面的else语句表示不为休息日时的相应操作。代码如下所示。

if(iDay>Friday)	/*判断为休息日的情况*/
{
	if(iDay==Saturday)		/*判断为周六时的操作*/
	{}
	else		/*为周日时的操作*/
	{}
}
else			/*不为休息日的情况*/
{
	if(iDay==Monday)		/*判断为周一时的操作*/
	{}
	else
	{}
}

条件运算符

在使用if语句时,可以通过判断表达式为,而执行相应的表达式。例如:

if(a>b)

  {max=a;}

else

  {max=b;}

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

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

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

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

在运算中,首先对第一个表达式的值进行检验。如果值为真,则返回第二个表达式的结果值;如果值为假,则返回第3个表达式的结果值。例如上面使用条件运算符的代码,首先判断表达式a>b是否成立,成立则说明结果为真,否则为假。当为真时,将a的值赋给max变量;如果为假,则将b的值赋给max变量。

switch语句

switch语句的基本形式

switch语句是多分支选择语句。例如,如果只需要检验某一个整型变量的可能取值,那么可以用更简便的switch语句。switch语句的一般形式如下:

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

switch语句的程序流程如图所示 

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第5张图片

多路开关模式的switch语句

设计多路开关模式的switch语句,其形式如下:

switch(表达式)
{
	case 1:
		语句1
		break;
	case 2:
	case 3:
		语句2
		break;
	……
default:
		默认语句
		break;
}

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

if else语句和switch语句的区别

if else语句和switch语句都用于根据不同的情况检验条件做出相应的判断。那么if else语句和switch语句有什么区别呢?下面从两者的语法和效率的比较进行讲解。

语法的比较

if是配合else关键字进行使用的,而switch是配合case使用的;if语句先对条件进行判断,而switch后进行判断。

效率的比较

if else结构对开始少量的检验判断速度比较快,但是随着检验的增长会逐渐变慢,其中的默认情况是最慢的。使用if else结构可以判断表达式,但是也不能减少选择深度的增加使得检验速度变慢的趋势,并且也不容易进行后续的添加扩充。

switch结构中,对其中每一项case检验的速度都是相同的,但除去default的默认情况,default默认情况比其他情况都快。

当判定的情况占少数时,if else结构比swtich结构检验速度快。也就是说,如果分支在3或者4个以下,用if else比较好,否则选择switch结构。

选择结构程序应用

【实例6.14】 使用switch语句计算运输公司的计费。某运输公司的收费按照用户运送货物的路程进行计费。路程(s)越远,每公里运费越低,收费标准如表6.1所示。

路程(KM) 运费

s<250

没有折扣

250≤s<500

2%折扣

500≤s<1000

5%折扣

1000≤s<2000

8%折扣

2000≤s<3000

10%折扣

3000≤s

15%折扣

#include
int main()
{
	int iDiscount;		/*表示折扣*/
	int iSpace;		/*表示路程*/
	int iSwitch;		/*表示折扣的检验情况*/
	float fPrice,fWeight,fAllPrice;
	printf("enter the price , weight and space\n");
	scanf("%f%f%d",&fPrice,&fWeight,&iSpace);
	if(iSpace>3000)
	{
		iSwitch=12;		/*折扣的检验情况为12*/
	}
	else
	{
		iSwitch=iSpace/250;	/*计算折扣的检验情况*/
	}
	switch(iSwitch)		/*使用switch进行检验*/
	{
	case 0:
		iDiscount=0;	
		break;
	case 1:
		iDiscount=2;
		break;
        case 2:
	case 3:
		iDiscount=5;
		break;
	case 5:
	case 6:
	case 7:
		iDiscount=8;
		break;
	case 8:
	case 9:
	case 10:
	case 11:
		iDiscount=10;
		break;
	case 12:	
		iDiscount=12;
		break;
	default:
		break;
	}
	fAllPrice=fPrice*fWeight*iSpace*(1-iDiscount/100.0);	/*计算总价格*/
	printf("AllPrice is :%.4f\n",fAllPrice);	/*输出结果*/
	return 0;
}

 初识C语言之条件结构篇——带你认知编程世界的逻辑之美!_第6张图片

本本介绍了选择结构的程序设计方式,包括if语句和switch语句。同时对if…else语句和else if语句的形式也进行了介绍,为选择结构程序提供了更多的控制方式。然后介绍了switch语句,当switch语句用在当检验的条件较多时,如果使用if语句进行嵌套也是可以实现的,不过其程序的可读性会降低。最后通过两种选择语句的比较来进行区分。

每文一语

遇雨撑伞,遇桥自渡

你可能感兴趣的:(C语言语法从入门到精通,c++,算法,条件语句,条件结构,C语言条件语句)