C语言学习(四)判断与分支

本次学习主要学习C语言中的if语句,会介绍到关系运算,简单的if else语句、if else的嵌套、级联的if-else if语句以及switch语句,并且会介绍到if语句的常见错误。另外,还会通过一些例子进行if语句的编程练习。

1. 关系运算

计算两个值之间的关系,叫做关系运算,关系运算符有如下几种:
在这里插入图片描述
关系运算的结果:关系运算的结果只有两种,要么关系运算成立,结果为1;要么关系运算不成立,结果为0。

优先级:
① 关系运算符的优先级比算术运算的低,但是比赋值运算高。
例如:printf(“%d\n”,7>=3+4);
输出的结果是1,也就是对3+4的结果进行了与7的关系运算得到的是成立,最后输出了1。表明算术运算优先级高于关系系运算。
② 在所有的关系运算符中,==与!=的优先级又更低一些,其他运算符则是从左到右。

2.if else语句

If(条件成立){
……
}
else
……

如果括号中的条件成立则执行if括号中的语句,不成立则执行else后的语句

例1:找零计算器
分析:
需要用户输入购买物品的金额以及纸币的票面,进行找零的计算,除此之外要考虑判断金额不足的情况,因此这里也用到了判断。所以在之前的例子上加入if语句既可。

if语句代码如下:


if(amount>=price)
	{
		 printf("找您%d元\n",change);
	}
	else
		printf("金额不足");

完整代码如下:


#include<stdio.h>

int main()
{
	int price = 0,change = 0;
	int amount = 100;

	printf("请输入金额\n");
	scanf("%d",&price);

	printf("请输入票面\n");
	scanf("%d",&amount);

    change =amount-price;

	if(amount>=price)
	{
		 printf("找您%d元\n",change);
	}
	else
		printf("金额不足");

	return 0;
}

除了上面的那种表示,也可以不带{}

if(判断)
语句1
else
语句2
语句3

这样的写法程序执行为:如果条件成立,执行语句1,不成立执行语句2,if else执行完成后再执行语句3,也就是说语句1是if的一部分,语句2是else的一部分,而语句3与判断语句无关。

3.if else语句的嵌套

例2:找到三个数中最大的那一个
算法流程图如下:
在这里插入图片描述

程序代码如下:


#include<stdio.h>

int main()
{
	int a,b,c;
	int max=0;
	
	scanf("%d %d %d",&a,&b,&c);

	if(a>b)
	{
		if(a>c)
			max=a;
		else
			max=c;
	}
	else
	{
		if(b>c)
			max=b;
		else
			max=c;
	}
	
	printf("max=%d\n",max);

	return 0;
}

if else的匹配问题:else总是和最近的那个else进行配对,所以安全的编程方式是加{}。

4.级联的if— else if语句
例3:一个分段函数的表示
F(x)=-1;x<0
0;x-0
2x;x>0

代码表示如下:


if(x<0)
	f=-1;
else if(x=0)
	f=0;
else
	f=2*x;

5.if语句常见错误
①忘了大括号,形式如下:
if(判断)
语句1
语句2
这时语句2即使进行了缩进,但实际不是if内的语句,会在if判断后执行。

② if后面加分号
C语言要求每个语句后面都有分号,但是实际上if包含后面的语句或者大括号的内的语句;如果if的圆括号加了分号,则默认if判断后没有所需要执行的语句。

③ if的判断中==与=
如果只有一个=,这表示的是一个赋值,而并不是一个关系判断。if只要求()里面的值是0或者1,也就是进行一个关系运算得到结果。

④ 代码风格
如果是if else后面只有一个语句,可以不写{},如果代码比较复杂,一定要用{}
如果有{},里面的部分需要进行缩进。

6.多路分支switch else语句
如果有多路分支,用多个else if语句会比较繁琐,这里就引入了switch else语句。
形式如下:
switch(控制表达式)
{
case常量:
语句
case常量:
语句
default:
语句
}
控制表达式只能是整数类型的结果。

例4:

#include<stdio.h>

int main()
{
	int type;

	scanf("%d",&type);

	switch(type)
	{
	case 1:
		printf("你好");
		break;
	case 2:
		printf("早上好");
		break;
     case 3:
		printf("晚上好");
		break;
	 default:
		 printf("什么?");
		 break;
	}
	return 0;
}

break:
switch语句可以看做是一种跳转,根据表达式判断跳转到相对的case处,在switch内部如果没有break,运行完会顺序运行下一个case,一直到遇到break或者运行完整个switch。

猜你喜欢

转载自blog.csdn.net/qq_33523925/article/details/86659381