C语言分支语句之if的一些用法

server/2024/10/22 7:59:11/

目录

  • 引言
    • C语言结构
  • 1. if 语句
    • 1.1 if
    • 1.2 else
  • 2. 分支中包含多条语句
  • 3. 多重选择 else if
  • 4. 嵌套if
  • 5. 悬空else / else与if配对问题

引言

C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条件选择执行不同的代码块。这两个结构在编写程序时非常有用,可以帮助我们实现不同的逻辑和控制流程。在本篇文章中,我们将详细介绍C语言中的分支语句中的if。

C语言结构

C语言是一种结构化控制语言,这里的结构即为顺序机构、选择结构、循环结构。

在C语言中,我们可以使用 ifswitch 实现分支结构,使用 forwhiledo while 实现循环结构。

1. if 语句

1.1 if

if语句的语法形式是这样的

if(表达式)语句

表达式成立(为真),则语句执行; 表达式不成立(为假),则语句不执行;

在C语言中,0为真,非0为假;即如果表达式的结果为0,则语句执行;若表达式结果非0,则语句不执行;

例子,输入一个整数,判断是否为奇数:
在这里插入图片描述

#include<stdio.h>
int main()
{int num = 5;if (num % 2 != 0){printf("%d是奇数", num);}return 0;
}

输出结果
在这里插入图片描述

1.2 else

如果一个数不是奇数,那么这个数就是偶数了,那么我们如何判断这个数是奇数还是偶数呢?

这里就需要 **if…else…**的语句表示形式了,其具体形式如下:

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

例子,输入一个整数,判断他是否为奇数,若为奇数,怎判断为奇数,反之,则判断为偶数;

#include<stdio.h>
int main()
{int num = 0;scanf("%d", &num);if (num % 2 != 0)printf("%d是奇数", num);elseprintf("%d是偶数", num);return 0;
}

在这里插入图片描述

在这里插入图片描述
练习:输入一个年龄,如果大于等于18,则输出为成年,反之为未成年:

#include<stdio.h>
int main()
{int year = 0;printf("请输入年龄:");scanf("%d", &year);if (year >= 18)printf("是成年\n");elseprintf("是未成年\n");return 0;
}

在这里插入图片描述

2. 分支中包含多条语句

默认在 if 和 else 语句中默认只控制一条语句。若想要控制多条语句,则用{}将多条语句括起来。

#include<stdio.h>
int main()
{int a = 0;int b = 0;int c = 0;printf("请输入a和b:");scanf("%d%d", &a, &b);if (a >= b){c = a;a += b;b = c;printf("a=%d\nb=%d", a, b);}else{c = b;b += a;a = c;printf("a=%d\nb=%d", a, b);}return 0;
}

输出结果
在这里插入图片描述

3. 多重选择 else if

在现实生活中我们常有多种选择,在程序中我们也可以用 else if来拓展if else 结构来模拟着中情况。

#include<stdio.h>
int main()
{int age = 0;printf("请输入年龄:");scanf("%d", &age);if (age < 18){printf("未成年\n");}else if (age <= 44){printf("青年\n");}else if (age <= 59){printf("中年\n");}else if (age <= 89){printf("老年\n");}else{printf("老寿星\n");}return 0;
}

输出结果
在这里插入图片描述

4. 嵌套if

实际上,else ifif else的一种变式。即一个新的if语句嵌套 else语句中;

换一句话说,在if else 语句中,else 可以与另一个 if语句连用,形成多重判断;


int main()
{int age = 0;scanf("%d", &age);if (age < 18){printf("少年\n");}else{if (age <= 44){printf("⻘年\n");}else{if (age <= 59){printf("中⽼年\n");}else{if (age <= 89)printf("⽼年\n");elseprintf("⽼寿星\n");}}}return 0;
}

在这里插入图片描述
有了着中嵌套语法,就可以完成更多复杂的逻辑判断;

5. 悬空else / else与if配对问题

如果有有许多 if 和 else,那么 else 只与最近的else配对;

猜一猜下面代码的结果是什么?

#include<stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}

在这里插入图片描述
很多初学者,上来就判断a=0,不等于1,那就执行else字句,打印haha

但是当你运行代码时, 打印结果却是:啥都不输出;

为什么呢?

这就是悬空else问题,如果有多个if和else,可以记住这样一条原则,else总是跟最近的if匹配;

上面的代码的排版,让else和第一个if对齐,让我们以为else是和第一个if匹配的,当第一个if语句不成立的时候,自然想到接下来要执行else语句,打印haha,但实际else是和第二个if匹配,这样后边的if...else语句是嵌套在第一个if语句内的,如果第一个if语句不成立,那被嵌套的if和else就没机会执行了,最终啥都不打印;

上面代码相当于下面代码

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

改正后代码

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

在这里插入图片描述
只要适当带上大括号,代码的逻辑就会变得更加清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高!


http://www.ppmy.cn/server/90140.html

相关文章

MYSQL(2) 高级查询

文章目录 概述高级查询基础查询条件查询范围查询判空查询模糊查询分页查询查询后排序分组查询 小结 概述 接上篇&#xff0c;上篇写到增删改查。这篇继续。 高级查询 基础查询 -- 全部查询 select * from student; -- 只查询部分字段 select sname, class_id from student;…

通过iframe碎片实现web局部打印

通过iframe碎片实现web局部打印 创建打印模板 首先&#xff0c;创建一个出货单的 HTML 模板&#xff0c;并用 CSS 进行样式设计。 tips: 1、直接通过iframe碎片拉起打印&#xff0c;会导致样式丢失&#xff0c;所以需要获取当前界面的样式。 ${Array.from(document.querySel…

基于 HTML+ECharts 实现智慧工地数据可视化大屏(含源码)

构建智慧工地数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 智慧工地已成为建筑行业的新趋势。通过实时监控和数据分析&#xff0c;智慧工地可以提高施工效率、降低安全风险。本文将详细介绍如何利用 HTML 和 ECharts 实现一个功能强大的智慧工地数据可视化大屏。 源…

网络基础之(11)优秀学习资料

网络基础之(11)优秀学习资料 Author&#xff1a;Once Day Date: 2024年7月27日 漫漫长路&#xff0c;有人对你笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的博客-CSDN博客。 参考文档&#xff1a; 网络工程初学者的学习方法及成长之路&#xff08;红…

C#港澳台通行证识别接口、台胞证识别、ocr证件识别

在这个快节奏的时代&#xff0c;效率至上&#xff0c;每一秒都弥足珍贵。想象一下&#xff0c;无需手动输入繁琐的证件信息&#xff0c;仅需轻轻一扫&#xff0c;证面上所有文字信息便可呈现在眼前将是多么的便利&#xff0c;这得益于文字识别技术衍生下的-证件识别接口&#x…

Python | TypeError: ‘function’ object is not subscriptable

Python | TypeError: ‘function’ object is not subscriptable 在Python编程中&#xff0c;遇到“TypeError: ‘function’ object is not subscriptable”这一错误通常意味着你尝试像访问列表、元组、字典或字符串等可订阅&#xff08;subscriptable&#xff09;对象那样去…

Unity顶点动画(Vertex Animation):创造动态视觉效果

在Unity中&#xff0c;顶点动画(Vertex Animation)是一种强大的技术&#xff0c;它允许开发者直接在顶点级别上操作和变形网格&#xff0c;从而实现各种动态视觉效果。顶点动画不依赖于骨骼绑定&#xff0c;因此非常适合模拟布料、流体、面部表情等复杂的动画效果。本文将探讨顶…

搭建基于 ChatGPT 的问答系统第五章-思维链推理

需要学习提示词工程的同学请看面向开发者的提示词工程 前几章内容请查看 搭建基于 ChatGPT 的问答系统第一章-综述 搭建基于 ChatGPT 的问答系统第二章-提问范式与Token 搭建基于 ChatGPT 的问答系统第三章-评估输入分类 搭建基于 ChatGPT 的问答系统第四章-检查输入审核 第五…