15.分支语句1.if&else

0.0 结构

C语言是结构化的程序设计
顺序结构按顺序往下一步一步走
选择结构-分支语句不按顺序,有的选择if
switch-开关
循环结构-循环语句循环for
while
do while
go to 语句

什么是语句?C语言中由一个分号;隔开的就是一条语句。如下

printf("TIGA_GA");
1+2;

分支语句(选择结构)

选择?顾名思义,即有多个条件可以选择。

if语句的语法结构是什么样的呢?

第一种,当if()括号内的表达式成立时,即为为真时(非0),执行语句;为假时(0)不执行。

if(表达式)
    语句;

 第二种,当if()括号内的表达式成立时,即为真时(非0),执行语句1;为假时(0),执行语句2。

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

第三种,多分支,当if()括号内的表达式1成立时,即为真时(非0),执行语句1;else if()括号内的表达式2成立时,即为真时(非0),执行语句2;都不成立时,即均为假时(0),执行语句3。

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

1.1 单支语句

如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年。

int main()
{
	int a = 10;
	if (a >= 18)
		printf("成年\n");
	return 0;
}
编译运行显示

 由于10没有达到if表达式中大于等于18的要求,所以语句没有被执行。

1.2 双支语句

如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年;小于18,则显示未成年。

int main()
{
	int a = 10;
	if (a >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0;
}
编译运行显示

如果一个人的年龄为10,在C语言中实现判断这个人的年龄如果大于等于18,则显示成年;小于18,则显示未成年。

1.3  if和else语句后面只能控制一条语句

int main()
{
	int a = 20;
	if (a >= 18)
		printf("成年\n");
	else
   		printf("未成年\n");
	    printf("不能谈恋爱\n");
	return 0;
}
理想运行结果实际运行结果

如果想运行出理想运行结果,只需要添加{}即可,一个{}叫一个代码块

int main()
{
	int a = 20;
	if (a >= 18)
		printf("成年\n");
	else
    {
		printf("未成年\n");
	    printf("不能谈恋爱\n");
    }
	return 0;
}

1.4 表达式的正确书写

以下代码运行之后是什么结果

​
int main()
{
	int y = 60;
	if (y <= 18)
		printf("未成年");
	else if (18 <= y < 30)
		printf("青年");
	return 0;
}

​

理想状态下,结果应该没有显示,但实际上

结果显示青年,是因为y的初始值是60,60必然是满足else if的前提条件大于等于18的,在满足大于等于18之后,条件成立,为真即1,且1小于30,所以运行结果显示青年。

若想显示理想状态,即将else if中的表达式稍作修改即可,如下:

int main()
{
	int y = 60;
	if (y <= 18)
		printf("未成年");
	else if (y>=18,y < 30)
		printf("青年");
	return 0;
}

1.5 悬空else

代码1

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

代码2

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

代码1和代码2运行结果均无显示,else与离它最近的if所匹配,所以代码1和代码2本质上一样。 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值