[C语言]if语句详解

C语言初阶系列

分支语句和循环语句(1)


目录

C语言初阶系列

前言

一,什么是语句?

1.1如何理解语句?

二,分支语句(选择结构)

2.1,if语句

2.2,if语句的错误的条件写法

2.2,if语句的正确的条件写法

2.3,单分支结构

2.4,双分支结构

2.5,多分支结构        

2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

2.5.2简洁的写法

2.5.2更简洁的写法

2.6,if语句默认它的后面只能控制一条语句

 2.7,养成良好的代码习惯

2.7.1更人看懂的代码风格 

if语句小技巧

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

2.8.2.输出1 - 100之间的奇数

总结


前言

我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将初步探索if语句这个知识关卡


一,什么是语句?

C语言语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句

1.1如何理解语句?

我们将使用代码和注释,以及和运行示意图:

int main()
{
	3 + 5;//这就是一个表达式语句
	printf("hehe\n");//我们想用printf函数打印hehe这个信息,调用这个函数,
	//完成之后给个分号,这就是函数调用语句
	//语句就是大部分情况下一个分号隔开的就是一个语句
	;//简单的放一个分号,这就是一个语句,但是这个语句什么都不干,这叫空语句
	//空语句的应用场景,有时候我们需要一条语句,但是这条语句什么都不需要做,就可以使用空语句
	return 0;
}

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语
言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句

二,分支语句(选择结构)

分支语句是面向我们C语言的选择结构,为了实现这种选择结构
C语言给出了分支语言这个语法特点

2.1,if语句

是C语言单子常用的,能够实现分支的这样的语句形式
if语句该怎么去书写呢,

解释一下:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。

2.2,if语句的错误的条件写法

我们将使用代码和注释,以及和运行示意图:

//错误写法
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (18<= age <=30)
	//表达式先判断age>=18,
	//如果age是50的话,18小于age,这个条件为真,为真就等于1
	//1又小于等于30,所以这个地方就打印青年了
	//不是两端去判断age在这个范围内,它是先执行18<= age,在执行age <=30
	printf("青年\n");
	return 0;
}

2.2,if语句的正确的条件写法

我们将使用代码和注释,以及和运行示意图:

正确写法
int main()
{
	int age = 0;
	scanf("%d", &age);
	if ( age >=18 && age <= 30)
	printf("青年\n");
	return 0;
}

2.3,单分支结构

单分支语法结构:
if (表达式)  
语句;

解释:
if语句的后面的小小括号里面放一个表达式,
表达式的结果如果为真,语句就被执行,表达式的结果如果为假就不被执行
C语言中:0表示假,非0表示为真
表达式如果算出的不是0就是真,语句执行,如果为0就不执行

我们将使用代码和注释,以及和运行示意图:

//单分支的场景
//只处理符合条件的
int main()
{
	//如果年龄大于等于18 -- 成年
	//小于18,不管他
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年人");
	}
	return 0;
}

2.4,双分支结构

双分支语法结构:
if (表达式)
语句1;
else
语句2;

解释:
if如果表达式为真,就执行语句1,
当表达式为假的时候,我也想处理,我就可以走else,就可以执行语句2
要么你从if语句进去,执行语句1,不行就执行else语句,执行语句2,这个里面二选一

我们将使用代码和注释,以及和运行示意图:

int main()
{
	// 有if有else你不行就我来
	//如果年龄大于等于18 -- 成年人,否则就打印 -- 未成年人
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年人");
	}
	else
	{
		printf("未成年人\n");
	}
	return 0;
}

2.5,多分支结构

多分支语法结构:    
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;

解释:
if表达式语句,如果表达式语句为真,就执行语句1,
如果不行的话,else if在判断一下下面表达式2,
如果表达式2的语句为真,就执行语句2,
如果表达式2的语句也不为真,就只能执行else的语句3
这里就做到了3选1,当然也可以多选1

多分支结构举例:
 我们使用多分支的条件
age <18  - 未成年
18-30  - 青年
31-50  -中年
51-70  -中老年
 71-99 -老年
 >99   -老寿星


2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

我们将使用代码和注释,以及和运行示意图:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
	}
	else//else如果是整体的一个逻辑的话,大于等于18,
		//else里面有很多种类的情况,里面也可以细分
	{
		if (age >= 18 && age <= 30)//如果大括号里面只有一条语句。就可以将大括号去掉
		{
			printf("青年\n");//if  else这个整体合起来是一条语句
		}
		else
		{
			if (age >= 31 && age <= 50)
			{
				printf("中年\n");
			}
			else
			{
				if (age >= 51 && age <= 70)
				{
					printf("中老年\n");
				}
				else
				{
					if (age >= 71 && age <=99 )
					{
						printf("老年\n");
					}
					else
					{
						printf("老寿星\n");
					}
				}
			}
		}
	}
	return 0;
}

 2.5.2简洁的写法

 我们将使用代码和注释,以及和运行示意图:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if (age >= 18 && age <= 30)
		printf("青年\n");
	else if (age >= 31 && age <= 50)
		printf("中年\n");
	else if (age >= 51 && age <= 70)
		printf("中老年\n");
	else if (age >= 71 && age <=99 )
		printf("老年\n");
	else
		printf("老寿星\n");		
	return 0;
}

  2.5.2更简洁的写法

 我们将使用代码和注释,以及和运行示意图:

//因为有前置条件可以在else if中写出一种条件就行 
//但是条件顺序不能变动,变动就会逻辑错误
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if ( age <= 30)
		printf("青年\n");
	else if ( age <= 50)
		printf("中年\n");
	else if ( age <= 70)
		printf("中老年\n");
	else if ( age <= 99)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

2.6,if语句默认它的后面只能控制一条语句

 我们将使用代码和注释,以及和运行示意图:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	    printf("成年了\n");
	    printf("谈恋爱");//独立的,不被if控制
	return;
}

如果想让if语句可以控制,就要加一个限制
if后面加上一个大括号,这样if语句才都被控制了

一个大括号对应的是一个代码块

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{//代码块
		printf("成年了\n");
		printf("谈恋爱");
	}
	return;
}

 2.7,养成良好的代码习惯

要养成良好的代码风格,让别人能够看得懂
容易让大家出现阅读错误的代码风格 

我们将使用代码和注释,以及和运行示意图:

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}
//看代码感觉结果是haha
//但是结果是不打印
//else是与最近的if相匹配的,这样第一if进入了才能执行if里面的if和else
//要写出让人容易理解的代码风格

//更容易看懂的代码风格
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}
	return 0;
}

2.7.1更人看懂的代码风格 

我们将使用代码和注释,以及和运行示意图:

if语句的书写风格
 容易误导的写法
if的条件满足就是return x,不满足就返回return y。
if (condition) {
    return x;
}
return y;
让人一目了然的写法
if (condition)
{
    return x;
}
else
{
    return y;
}
在不影响效率的情况下我们要写那种让人一目了然的代码

if语句小技巧

我们将使用代码和注释,以及和运行示意图:

int main()
{
	int a = 0;
	//if(a == 5)//这样写少写一个=号,不易发现,没有报错
	if (5 == a)//当我们写少写一个=号,就会报错,易发现错误
		//未来我们想判断一个变量和一个常量值是否相等的话,
		//可以把常量放在等号的左边,这样即使少写了一个等号,就会发现错误,改正
		printf("hehe\n");
	return 0;
}

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

我们将使用代码和注释,以及和运行示意图:

int main()
{
	int n = 0;
	scanf("%d", &n);//只有变量才能赋值,表达式是不能被赋值的,
	//少写一个等号就会直接报错的
	if (n % 2 == 1)//通过模2得到的余数为1的,都是奇数
	{
		printf("YES\n");
	}
	else
		printf("NO\n");
		return 0;
}

 2.8.2.输出1 - 100之间的奇数

我们将使用代码和注释,以及和运行示意图:

使用分支语句解题:

int main()
{
	int i = 1;//循环变量
	while (i <= 100)
	{
		if (i % 2 == 1)//通过模2得到的余数为1的,都是奇数
			printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰
		i++;
	}
	return 0;
}

 不使用分支语句解题:

int main()
{
	int i = 1;//循环变量
	while (i <= 100)
	{
		printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰
		i+=2;
	}
	return 0;
}


总结

以上就是今天要讲的内容,本文仅仅全面介绍了C语言的if语句,可以让你在c语言的探险更加有趣,充实。

  • 70
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 120
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值