C语言之 循环语句:程序运行的核心动力(上)

devtools/2025/3/18 20:28:30/

个人主页:strive-debug

在 C 语言中,分支结构可以通过 `if`、`switch` 语句来实现,循环结构则可以通过 `for`、`while`、`do while` 语句来实现。

`if` 语句

`if` 语句的语法形式如下:

if (表达式)语句;

如果表达式成立(为真),则执行语句;如果表达式不成立(为假),则不执行语句。在 C 语言中,0 表示假,非0 表示真。因此,如果表达式的结果是0,则语句不执行;如果表达式的结果不是0,则语句执行。

代码演示:

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

如果一个数不是奇数,那就是偶数了。为了清楚地判断一个整数是奇数还是偶数,可以使用 `if...else...` 语句。语法形式如下:
 

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

 例子
输入一个整数,判断是否为奇数,如果是奇数打印“是奇数”,否则打印“偶数”。

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

分支中包含多条语句


默认情况下,`if` 和 `else` 语句中只控制一条语句。例如:

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age >= 80){printf("该入土了
");printf("可以等着了
");}else{printf("你还有时间
");}return 0;
}

嵌套 `if`


在 `if...else` 语句中,`else` 可以与另一个 `if` 语句连用,构成多重判断。例如:输入一个整数,判断输入的整数是0,正数还是负数。

#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num == 0)printf("输入的数字是0
");else if(num > 0) // 这里的 if 相当于嵌套在 else 语句中,形成了嵌套结构printf("输入的数字是正数
");elseprintf("输入的数字是负数
");return 0;
}


有了嵌套 `if` 语句,就可以完成更多复杂逻辑的判断。

 悬空 `else` 问题


如果有多个 `if` 和 `else`,记住这样一条规则:`else` 总是跟最接近的 `if` 匹配。例如:

#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num == 0)printf("输入的数字是0
");else if(num > 0) // 这里的 if 相当于嵌套在 else 语句中,形成了嵌套结构printf("输入的数字是正数
");elseprintf("输入的数字是负数
");return 0;
}


通过适当的大括号,可以让代码的逻辑更加清晰,提高可读性。

 `switch` 语句


`switch` 语句根据表达式的值使程序跳转到不同的代码段去执行。其语法形式如下:

switch (表达式)
{case 常量1:语句1;break;case 常量2:语句2;break;// ...default:语句n;break;
}

输入任意一个整数值,计算除3之后的余数
使用 `if` 语句完成:

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);if(n % 3 == 0)printf("整除,余数为0
");else if(n % 3 == 1)printf("余数是1
");elseprintf("余数是2
");return 0;
}


使用 `switch` 语句改写:

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch(n % 3){case 0:printf("整除,余数为0
"); break;case 1:printf("余数是1
"); break;case 2:printf("余数是2
"); break;}return 0;
}


注意事项:
1. `case` 和后边的数字之间必须有空格。
2. 每一个 `case` 语句中的代码执行完成后,需要加上 `break`,才能跳出这个 `switch` 语句。


http://www.ppmy.cn/devtools/168147.html

相关文章

MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例&#xff0c;自己根据实际情况修改。 安装MySql8.4时&#xff0c;MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件&#xff0c;大概可看到下面这样的参数列表&#xff0c;可能不同版本的mysql参数多少会…

数据结构与算法——算法3 面试常用排序算法

首先了解排序算法性能和优缺点 然后了解快排 和堆排序的方法。 可以参考如下的博客 八大排序(超详解附动图源码)

在项目中操作 MySQL

随着Web应用程序的发展&#xff0c;与数据库进行交互成为了后端开发中的核心任务之一。Node.js作为一个异步事件驱动的JavaScript运行时&#xff0c;非常适合构建可扩展的网络应用。而MySQL作为最流行的关系型数据库管理系统之一&#xff0c;自然成为了许多项目的首选数据库。本…

大华HTTP协议在智联视频超融合平台中的接入方法

一. 大华HTTP协议介绍 大华HTTP协议是大华股份&#xff08;Dahua Technology&#xff09;为其安防监控设备开发的一套基于HTTP/HTTPS的通信协议&#xff0c;主要用于设备与客户端&#xff08;如PC、手机、服务器&#xff09;之间的数据交互。该协议支持设备管理、视频流获取、…

2025最新版Node.js安装教程:从环境搭建到镜像加速全解析

一、Node.js 简介 Node.js 是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;采用事件驱动、非阻塞I/O模型&#xff0c;广泛应用于服务端开发、前端工具链构建等场景。其核心优势包括&#xff1a; 高性能&#xff1a;V8引擎编译执行JS代码&#xff0c;速度远超传统…

基于SpringBoot+Vue的幼儿园管理系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、教师、普通用户功能模块&#xff1a;用户管理、教师管理、班级管理、幼儿信息管理、会议记录管理、待办事项、职工考核、请假信息、缴费信息、体检管理、资源管理、原料管理、菜品信息管理等技术选型&#xff1a;SpringBoot&#xff0…

MATLAB中griddedInterpolant函数用法

目录 语法 说明 示例 一维插值 比较使用完整网格和网格向量的三维插值 使用默认网格进行插值 更精细的网格上的二维插值 一维外插 在同一网格上进行多组值插值 griddedInterpolant函数的功能是实现网格数据插值。 语法 F griddedInterpolant F griddedInterpolant…

vue3单独引用element-plus的Infinite Scroll无限滚动;vue3自定义指令

文章目录 1.正常单独使用element-plus其他功能组件2.引入类似与指令的插件3.自定义指令钩子 1.正常单独使用element-plus其他功能组件 引入即可使用 import { ElSelect, ElOption } from "element-plus"2.引入类似与指令的插件 需要先引入&#xff0c;再注册&…