【C语言】分支和循环(2)

🤔个人主页: 起名字真南
😙个人专栏:【数据结构初阶】 【C语言】 【C++】

请添加图片描述

1 关系操作符

C语言用于比较的表达式,称为“ 关系表达式 ” 里面使用的运算符称为关系运算符,主要的关系运算符有下面六个

  • ‘>’ 大于运算符
  • ‘<’ 小于
  • ‘<=’ 小于等于
  • ‘>=’ 大于等于
  • ‘==’ 相等运算符
  • ‘!=’ 不相等运算符

下面是一些例子

#include<stdio.h>

int main()
{
	int a, b;
	a > b;
	a > b;
	a >= b;
	a <= b;
	a == b;
	a != b;
	return 0;
}

关系表达式通常返回0或1用来表示真假,其中1代表真0代表假。
关系表达式常用于if或while结构
在这里插入图片描述
注意相等运算符==和赋值运算符=非常容易混淆,另一个需要注意的就是关系运算符注意连用

2 条件操作符

条件操作符也叫做三目操作符需要有三个操作数形式如下

在这里插入图片描述
条件操作符的计算逻辑是:如果exp1 为假,exp1 为真,exp2 计算,计算的结果是整个表达式的结果;如果exp3 计算,计算的结果是整个表达式的结果。

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	if (a > 3)
	{
		b = 5;
	}
	else 
	{
		b = -5;
	}
	printf("%d\n", b);

	//使用条件操作符
	scanf("%d", &a);
	b = a > 3 ? 5 : 5;
	printf("%d\n", b);
	return 0;
}

3 逻辑操作符 :|| ,&& ,!

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符

  • ! 逻辑取反运算符(改变单个表达式的真假)
  • || 或运算符,就是or或的意思两个表达式只要有一个为真就为真
  • && 与运算符,就是and和的意思两个表达式必须全为真就为真

3.1 逻辑取反运算符

在这里插入图片描述

3.2 与运算符

在这里插入图片描述
&& 就是与运算符,也是并且的意思,&&是⼀个双⽬操作符,使⽤的⽅式是
式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

3.3 或运算符

在这里插入图片描述
|| 就是或运算符,也就是或者的意思,|| 也是⼀个双⽬操作符,使⽤的⽅式是a || b ,||两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

3.4 练习闰年判断

int main()
{
	int year;
	printf("请输入一个年份:");
	scanf("%d", &year);
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
	{
		printf("闰年");
	}
	else
	{
		printf("不是闰年");
	}
	return 0;
}

3.5 短路

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

计算下列代码的值

	int i = 0, a = 0, b = 2, c = 3, d = 4;
	//i = a++ && ++b && d++;
	i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

4 switch语句

除了if 语句外,C语⾔还提供了switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的if…else 结构,⽤于判断条件有多个结果的情况。它把多重else if 改成更易⽤、可读性更好的形式。

在这里插入图片描述

  • 注意switch后的条件必须是整形表达式
  • 每一个case后面要加上一句break用来跳出语句

4.1 switch和if语句的对比

int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a % 3 == 0)
	{
		printf("余数为0");
	}
	else if(a % 3 == 1)
	{
		printf("余数为1");
	}
	else if (a % 3 == 2)
	{
		printf("余数为2");
	}
	//
	switch (a % 3)
	{
	case 0:
		printf("余数为0");
		break;
	case 1:
		printf("余数为1");
		break;
	case 2:
		printf("余数为2");
		break;
	}
}

注意:在使⽤break ,或者在哪⾥使⽤switch 语句的时候,我们经常可能遇到⼀种情况,⽐如配代码中的switch 后的表达式中的值⽆法匹case 语句的时候,这时候要不就不做处理,要不就得在switch 语句中加⼊default ⼦句。
关于default和case的顺序问题:
在switch语句中case⼦句和default⼦句有要求顺序吗?
default只能放在最后吗?
其实,在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。不过我们通常是把default⼦句放在最后处理的。

5 while循环

在这里插入图片描述
while语句的形式括号里面的时判断条件如果条件为真则进行{}内的语句如果条件为假则不执行,如果条件一直为真则会造成死循环。注意循环条件。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值