首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言初阶】搞定 C 语言所有分支!if-else/switch + 关系 / 逻辑 / 条件操作符 + 实战案例

【C语言初阶】搞定 C 语言所有分支!if-else/switch + 关系 / 逻辑 / 条件操作符 + 实战案例

作者头像
小龙报
发布2025-12-15 15:19:16
发布2025-12-15 15:19:16
2020
举报
文章被收录于专栏:C\C++C\C++

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《C语言》永远相信美好的事情即将发生

前言

C语言是结构化的程序设计语言, 结构指的是 顺序,选择,循环,三种结构,我们可以使用 if–else, switch实现选择结构使用 while, for, do_while实现循环结构 ,下面让我们一起来学习一下这些知识吧

一、if-else

代码语言:javascript
复制
   1语法形式:
      if( 表达式 )
         语句1
      else
        语句2
       注:表达式成立(为真),执行绑定的语句,不成立 (为假),if语句不执行,执行else语句。
代码语言:javascript
复制
2.例题.输入一个数判断是否为奇数
代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int num;
	scanf("%d", &num);

	if (num % 2) //奇数模上2不等于0
		printf("%d是奇数",num);
	else
		printf("%d不是奇数",num);
	return 0;
}

//执行结果如下 .

在这里插入图片描述
在这里插入图片描述

3.分支中包含多条语句 默认if和else语句均只控制一条语句,如需多条语句需要加上*{ }* 例:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int age;
	scanf("%d", &age);

	if (age >= 18)
	{
		printf("成年了\n");
		printf("可以谈恋爱了\n");
	}
	return 0;
}

//运行结果

在这里插入图片描述
在这里插入图片描述

二、嵌套if

在if-else结构中else可以与if语句连用构成嵌套判断 例题:输入一个数判断是0,还是正数,或者是负数

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int nums;
	scanf("%d", &nums);

	if (nums == 0)
		printf("0");
	else if (nums > 0)
		printf("%d是正数", nums);
	else
		printf("%d是负数",nums);
	return 0;
}
在这里插入图片描述
在这里插入图片描述

// 相信到了这里你已经对if-else语句有了一个基本的理解让我们来完成一道练习

输入⼀个人的年龄 如果年龄<18岁,打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45岁⾄59岁打印"中⽼年" 如果年龄在60岁⾄89岁打印"⽼年" 如果90岁及以上打印"⽼寿星"

答案 :(不唯一此解法只是鄙人一看到此题的第一想法,如大家有更好的解法可以分享讨论)

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int age;
	scanf("%d", &age);

	if (age < 18)
		printf("少年\n");
	else if (age >= 18 && age <= 44)
		printf("青年\n");
	else if (age >= 45 && age <= 59)
		printf("中老年\n");
	else if (age >= 60 && age <= 89)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}
在这里插入图片描述
在这里插入图片描述

三.悬空if的问题

注意:在这里我们只需要记住一点: else只与最近的if匹配 在这里我们来看一个这样的问题

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;

	if (a == 1)
		if (b == 2)
			printf("yes\n");
	else
		printf("no\n");
	return 0;
}

// 许多初入门的同学可能觉得这个代码运行输出no,但我们运行起来看一下

在这里插入图片描述
在这里插入图片描述

我们发现这个代码运行起来并没有我们想要的结果,这便是我们前面讲到的else总是与最近的if匹配

以下是修正后的代码可以更加直观帮助我们理解

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;

	if (a == 1)
	{
		if (b == 2)
			printf("yes\n");
		else
			printf("no\n");
	}
	return 0;
}

这两段代码实际上是等价的,希望看完后能帮助刚才困惑的读者同学们理解,下面这段代码加上大括号后可读性更强,因此为了防止代码出现歧义,我们可以合理的使用大括号。

四.关系操作符

C语言中常见的关系操作符也称关系表达式一共有六个 • > ⼤于运算符 • >= ⼤于等于运算符 • <= ⼩于等于运算符 • == 相等运算符 • != 不相等运算符 注:1.关系表达式通常返回0或1表示真假 2.多个关系运算符不宜连用 3.C语言中等号为==而数学中的=在C中是赋值的意思


五.条件操作符

1.条件操作符也叫三目操作符语法形式如下:

代码语言:javascript
复制
   expt1? exp2 : exp3
代码语言:javascript
复制
例:(以下两段代码为一个意思方便理解)
代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	scanf("%d", &a);
	if (a > 5)
		b = 1;
	else
		b = 3;
	printf("%d", b);
	return 0;
}

//改造后
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	scanf("%d", &a);
	int c = a > 5 ? 1 : 3;
	printf("%d", c);
	return 0;
}

六.逻辑操作符 :&&, || , !

注:在C语言中非0为真,0为假

  1. !:逻辑取反(改变表达式真假1 -> 0 或者0 -> 1)
  2. ||: 逻辑或
  3. &&:逻辑与 !!!重点 (1) || 与 &&比较 ||的使用(只要一个为真则为真)
在这里插入图片描述
在这里插入图片描述

&&的使用(同时为真才为真)

在这里插入图片描述
在这里插入图片描述

综合练习时间 例:判断一个数是否为闰年 参考:(笔者写法)

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);

	if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
		printf("%d是闰年\n", year);
	else
		printf("%d不是闰年\n",year);

}

运行结果

在这里插入图片描述
在这里插入图片描述

!!! 注意点: 短路问题 对于 && 和 ||:只要前面一个为真后面是否为真不用判断

7.switch语句

除了if语句还有switch可以来实现分支结构 7.1语法形式:

代码语言:javascript
复制
switch (expression) {
 case value1: statement
 case value2: statement
 default: statement

expression: 必须是整形表达式 value:必须是整形常量表达式

例题:计算一个数模3之后的余数

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int nums = 0;
	scanf("%d", &nums);

	switch (nums % 3)
	{
	case 0 :
		printf("余数是:%d", nums % 3);
		break;
	case 1:
		printf("余数是:%d", nums % 3);
		break;
	case 2:
		printf("余数是:%d", nums % 3);
		break;
	}
}

运行结果

在这里插入图片描述
在这里插入图片描述

注意: (1)case 和后面的数字之间有空格 (2)每一个case后面必须跟上break才能跳出switch语句 7.2 switch语句中的breakdefault 我们还是看上面那段代码

代码语言:javascript
复制
 #include <stdio.h>
int main()
{
	int nums = 0;
	scanf("%d", &nums);

	switch (nums % 3)
	{
	case 0 :
		printf("余数是:%d\n", 0);
	case 1:
		printf("余数是:%d\n", 1);
		break;
	case 2:
		printf("余数是:%d\n", 2);
		break;
	}
}

执行结果

在这里插入图片描述
在这里插入图片描述

验证了每一个case后面必须跟上break才能跳出switch语句

最后让我们来看看default

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int nums = 0;
	scanf("%d", &nums);

	switch (nums)
	{
	case 0 :
		printf("%d\n", 0);
		break;
	case 1:
		printf("%d\n", 1);
		break;
	case 2:
		printf("%d\n", 2);
		break;
	default:
		printf("%d\n", nums);
		break;
	}
}

运行结果:

在这里插入图片描述
在这里插入图片描述

注:如果不满足case里面的情况就会进入default 注:default和case的顺序根据自己代码习惯就OK了

总结:

本文介绍了C语言中循环和分支结构的基础知识,主要包含以下内容: if-else语句的语法和使用方法,通过判断奇数的例题演示其应用; 嵌套if语句的使用,通过判断正负数的案例展示多条件判断; 悬空if问题的原因和解决方法,强调else与最近if匹配的原则; 关系操作符和条件操作符的语法规则及注意事项; 逻辑操作符(&&,||,!)的使用方法及短路特性; switch语句的语法结构,重点说明break和default的作用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、if-else
  • 二、嵌套if
  • 三.悬空if的问题
  • 四.关系操作符
  • 五.条件操作符
  • 六.逻辑操作符 :&&, || , !
  • 7.switch语句
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档