C语言中的分支和循环:深入理解与应用

在C语言编程中,分支和循环结构是构建复杂程序逻辑的基石。它们允许程序根据不同的条件执行不同的操作,并且能够重复执行一段代码,从而实现高效、灵活的程序设计。
一、分支结构
(一)if语句
  基本形式
      if语句是最基本的分支结构。它的基本形式为:

if (条件表达式) {// 如果条件表达式为真,执行这里的语句块
}

      例如,我们想要判断一个数是否为正数:

int num = 5;
if (num > 0) {printf("%d是正数。\n", num);
}

      这里的条件表达式是一个关系表达式(num > 0),它的结果为真(在C语言中,非零值表示真)或者假(零值表示假)。如果条件表达式为真,那么紧跟在if后面的语句块(大括号内的部分)将会被执行。
  (二)if - else语句
      当我们想要在条件不满足时执行另外一段代码时,可以使用if - else语句。其形式如下:

if (条件表达式) {// 如果条件表达式为真,执行这里的语句块
} else {// 如果条件表达式为假,执行这里的语句块
}

      例如,判断一个数是正数还是非正数:

int num = -3;
if (num > 0) {printf("%d是正数。\n", num);
} else {printf("%d不是正数。\n", num);
}

  (三)if - else if - else语句链
      当有多个条件需要判断时,可以使用if - else if - else结构。例如,判断一个数是正数、负数还是零:

int num = 0;
if (num > 0) {printf("%d是正数。\n", num);
} else if (num < 0) {printf("%d是负数。\n", num);
} else {printf("%d是零。\n", num);
}

(四)switch语句
  基本形式
      switch语句用于多分支选择。它的基本形式为:

switch (表达式) {case常量表达式1:// 当表达式的值等于常量表达式1时执行这里的语句块break;case常量表达式2:// 当表达式的值等于常量表达式2时执行这里的语句块break;// 可以有多个case语句default:// 当表达式的值与所有常量表达式都不匹配时执行这里的语句块break;
}

      例如,根据用户输入的数字(1 - 3)显示相应的星期几(假设1代表星期一,2代表星期二,3代表星期三):

int day = 2;
switch (day) {case 1:printf("星期一");break;case 2:printf("星期二");break;case 3:printf("星期三");break;default:printf("输入无效");break;
}

      在switch语句中,表达式的值会与每个case后面的常量表达式进行比较。一旦匹配成功,就会执行对应的语句块,直到遇到break语句或者switch语句结束。如果没有匹配的case,则会执行default部分(如果有)。
二、循环结构
(一)while循环
  基本形式
      while循环的基本形式为:

while (条件表达式) {// 只要条件表达式为真,就会执行这里的语句块
}

      例如,计算1到100的整数和:

int sum = 0;
int i = 1;
while (i <= 100) {sum += i;i++;
}
printf("1到100的和为:%d\n", sum);

      在这个例子中,while循环会一直执行语句块,只要i <= 100这个条件为真。每次循环中,i的值会增加1,直到i的值超过100,此时条件表达式为假,循环结束。
(二)do - while循环
  基本形式
      do - while循环与while循环类似,但它的语句块至少会被执行一次。其基本形式为:

do {// 先执行这里的语句块
} while (条件表达式);1.例如,同样计算1到100的整数和:int sum = 0;
int i = 1;
do {sum += i;i++;
} while (i <= 100);
printf("1到100的和为:%d\n", sum);

      与while循环不同的是,do - while循环是先执行语句块,然后再判断条件表达式。如果条件表达式为真,则继续下一次循环;如果为假,则循环结束。
(三)for循环
  for循环是一种更紧凑的循环形式,它的基本形式为:

for (初始化表达式; 条件表达式; 循环后操作表达式) {// 只要条件表达式为真,就会执行这里的语句块
}

      例如,再次计算1到100的整数和:

int sum = 0;
for (int i = 1; i <= 100; i++) {sum += i;
}
printf("1到100的和为:%d\n", sum);

      在for循环中,初始化表达式只在循环开始时执行一次,用于初始化循环变量(如int i = 1);条件表达式用于判断是否继续循环(如i <= 100);循环后操作表达式在每次循环体执行完后执行,通常用于更新循环变量(如i++)。
三、嵌套使用
  1.分支结构嵌套
      在if语句或者switch语句中,可以嵌套其他的分支结构。例如,在一个判断成绩等级(优秀、良好、中等、及格、不及格)的程序中,如果成绩为优秀(90分及以上),再判断是否为满分(100分):

int score = 95;
if (score >= 90) {if (score == 100) {printf("满分!\n");} else {printf("优秀\n");}
} else if (score >= 80) {printf("良好\n");
} else if (score >= 70) {printf("中等\n");
} else if (score >= 60) {printf("及格\n");
} else {printf("不及格\n");
}

  2.循环结构嵌套
     循环结构也可以相互嵌套。例如,使用嵌套的for循环来输出九九乘法表:

for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d×%d = %d\t", i, j, i*j);}printf("\n");
}

      外层for循环控制行数,内层for循环控制列数,这样就可以输出一个完整的九九乘法表。
通过熟练掌握C语言中的分支和循环结构,我们能够编写各种复杂的程序逻辑,从简单的数值计算到复杂的数据处理和算法实现都离不开它们。希望这篇博客能够帮助你更好地理解和运用这些重要的编程结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465658.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器&#xff0c;但是不知道怎么拿来写代码&#xff0c;跑深度学习项目。确实&#xff0c;玩深度学习的成本比较高&#xff0c;无论是前期的学习成本&#xff0c;还是你需要具备的硬件成本&#xff0c;都是拦路虎。小罗没有办法…

成绩管理系统软件体系结构设计

成绩管理系统软件体系结构设计 文档简介 1.1 目的 1.2 范围 1.3 定义、首字母缩写词和缩略语 1.4参考资料 1.5 概述体系结构表示方式软件体系结构的目标和约束 3.1 结构清晰 3.2 支持外包开发 3.3 可扩展性 3.4 系统安全性 3.5 可移植性 4体系结构模式逻辑视图进程视图…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置&#xff0c;目的为让不同VLAN之间的设备能够互相通信。 1.首先&#xff0c;按照要求配置两个pc的ip地址&#xff0c;以pc0为例子&#xff1a; 2在交换机创建vlan10和vlan20 3.划分vlan&#xff0c;pc0为vlan10的设备&#xff0c;pc1为vla…

机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)

目录 关于1 基本流程2 划分属性的选择2.1 方法一&#xff1a;依据信息增益选择2.2 方法二&#xff1a;依据增益率选择2.3 方法三&#xff1a;依据基尼指数选择 3 剪枝处理&#xff1a;防止过拟合3.1 预剪枝3.2 后剪枝 4 连续与缺失值4.1 连续值处理4.2 缺失值处理 5 多变量决策…

Ubuntu和Debian系列的Release默认shell解释器变更

Debian 12 Bookworm 和 Ubuntu 24.04 中默认的 shell 解释器已经由 bash 变更为了 dash 。 这个变化对于我们直接在 CLI 上执行 Linux command 无影响&#xff0c;但对于执行shell解释性程序有影响&#xff0c;已知 bash 中的 变量正规表达式 &#xff08;如 ${GIT_COMMIT:0:8…

ReLU6替换ReLU为什么可以增强硬件效率?

ReLU6&#xff08;Rectified Linear Unit 6&#xff09;是ReLU的一种变体&#xff0c;它在ReLU的基础上增加了一个上限值6&#xff0c;即输出范围被限制在[0, 6]之间。 这种变化在硬件实现中可以带来以下几个方面的效率提升&#xff1a; 1. 数据表示的简化 ReLU的输出范围是[…

vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别

vscode在windows和linux如何使用cmake构建项目并make生成可执行文件&#xff0c;两者有什么区别 windows默认使用的是最新的visual studio&#xff0c;而linux默认就是cmake 文章目录 vscode在windows和linux如何使用cmake构建项目并make生成可执行文件&#xff0c;两者有什么…

Spirngboot集成Knife4j spirngboot版本2.7.17 Knife4j版本4.0.0

Knife4j是什么&#xff1f;有什么作用&#xff1f; ‌Knife4j‌是一个基于Swagger的Java RESTful API文档工具&#xff0c;旨在帮助开发者轻松生成和维护API文档。它继承并增强了Swagger的功能&#xff0c;简化了使用流程&#xff0c;并提供了一系列增强功能&#xff0c;如接口…

ROS2humble版本使用colcon构建包

colcon与与catkin相比&#xff0c;没有 devel 目录。 创建工作空间 首先&#xff0c;创建一个目录 ( ros2_example_ws ) 来包含我们的工作区: mkdir -p ~/ros2_example_ws/src cd ~/ros2_example_ws 此时&#xff0c;工作区包含一个空目录 src : . └── src1 directory, …

GY-56 (VL53L0X) 激光测距

文章目录 一、GY-56 简介二、引脚功能三、通信协议1.串口协议&#xff1a; 当 GY-56 PS 焊点开放时候使用(默认)&#xff08;1&#xff09;串口通信参数&#xff08;默认波特率值 9600bps&#xff09;&#xff08;2&#xff09;模块输出格式&#xff0c;每帧包含 8-13 个字节&a…

C语言 | Leetcode C语言题解之第541题反转字符串II

题目&#xff1a; 题解&#xff1a; void swap(char* a, char* b) {char tmp *a;*a *b, *b tmp; }void reverse(char* l, char* r) {while (l < r) {swap(l, --r);} }int min(int a, int b) {return a < b ? a : b; }char* reverseStr(char* s, int k) {int n strl…

提升网站安全性 HTTPS的重要性与应用指南

内容概要 在如今数字化快速发展的时代&#xff0c;网站安全显得尤为重要。许多用户在访问网站时&#xff0c;尤其是涉及个人信息或金融交易时&#xff0c;对数据传输的安全性有着高度的关注。HTTPS&#xff08;超文本传输安全协议&#xff09;正是为了满足这种需求而诞生的。通…

Transformer究竟是什么?预训练又指什么?BERT

目录 Transformer究竟是什么? 预训练又指什么? BERT的影响力 Transformer究竟是什么? Transformer是一种基于自注意力机制(Self-Attention Mechanism)的神经网络架构,它最初是为解决机器翻译等序列到序列(Seq2Seq)任务而设计的。与传统的循环神经网络(RNN)或卷…

OpenDroneMap Webodm

OpenDroneMap & Webodm OpenDroneMap Webodm 开源无人机航拍系列图像及其它系列图像三维重建软件。很棒的开源无人机测绘软件OpenDroneMap,从航拍图像生成精确的地图、高程模型、3D 模型和点云。 应用领域 Mapping & Surveying 测绘和测量 从图像测量获得高精度的可…

Java+Swing可视化图像处理软件

JavaSwing可视化图像处理软件 一、系统介绍二、功能展示1.图片裁剪2.图片缩放3.图片旋转4.图像灰度处理5.图像变形6.图像扭曲7.图像移动 三、系统实现1.ImageProcessing.java 四、其它1.其他系统实现2.获取源码 一、系统介绍 该系统实现了图片裁剪、缩放、旋转、图像灰度处理、…

迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证

近日&#xff0c;深圳市遨游通讯设备有限公司&#xff08;以下简称“遨游通讯”&#xff09;旗下5G防爆手机——AORO M8&#xff0c;通过了CSA集团的严格测试和评估&#xff0c;荣获国际IECEx及欧盟ATEX防爆认证证书。2024年11月5日&#xff0c;CSA集团和遨游通讯双方领导在遨游…

string模拟实现插入+删除

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 string模拟实现reserve 这里实现的是扩容 扩容这里是可以实现缩容&#xff0c;可以实现…

如何实现KIS私有云数据到聚水潭的高效集成

KIS私有云数据集成到聚水潭&#xff1a;KIS-供应商——>空操作案例分享 在企业信息化建设中&#xff0c;数据的高效流动和准确对接是提升业务效率的关键。本文将重点介绍如何通过轻易云数据集成平台&#xff0c;将KIS私有云中的供应商数据无缝集成到聚水潭系统&#xff0c;…

GESP4级考试语法知识(算法概论(三))

爱因斯坦的阶梯代码&#xff1a; //算法1-12 #include<iostream> using namespace std; int main() {int n1; //n为所设的阶梯数while(!((n%21)&&(n%32)&&(n%54)&&(n%65)&&(n%70)))n; //判别是否满足一组同余式cout<<n<…

【无标题】123

软件包管理器yum yum类似应用商店客户端&#xff0c;有人已经把软件写好放在服务器上了&#xff0c;通过yum找到服务器上的软件下载 软件操作 yum list 可以显示所有可下载软件&#xff0c;我们要找lrzsz软件 yum install 下载 yum remove 卸载 yum源 yum下载软件是通过下载…