C语言-控制语句

C语言中有三大结构,分别是顺序结构、选择结构和循环结构(分支结构)。

一、C 判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

1、if语句

if 语句:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

基本语法:

if(boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* 使用 if 语句检查布尔条件 */if (a < 20) {/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n");}printf("a 的值是 %d\n", a);return 0;
}

2、if…else 语句

if…else 语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

基本语法:

if(boolean_expression)
{/* 如果布尔表达式为真将执行的语句 */
}
else
{/* 如果布尔表达式为假将执行的语句 */
}

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if (a < 20) {/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n");} else {/* 如果条件为假,则输出下面的语句 */printf("a 大于 20\n");}printf("a 的值是 %d\n", a);return 0;
}

在这里插入图片描述

3、嵌套 if 语句

嵌套 if 语句:你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

基本语法:

if( boolean_expression 1)
{/* 当布尔表达式 1 为真时执行 */if(boolean_expression 2){/* 当布尔表达式 2 为真时执行 */}
}

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 100;int b = 200;/* 检查布尔条件 */if (a == 100) {/* 如果条件为真,则检查下面的条件 */if (b == 200) {/* 如果条件为真,则输出下面的语句 */printf("a 的值是 100,且 b 的值是 200\n");}}printf("a 的准确值是 %d\n", a);printf("b 的准确值是 %d\n", b);return 0;
}

在这里插入图片描述

4、switch case语句

switch 语句:一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

基本语法:

switch(expression){case constant-expression  :statement(s);break; /* 可选的 */case constant-expression  :statement(s);break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);
}

注意:

  • 1)break 关键字,专门用于跳出 switch 语句。一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句。
    1. default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */char grade = 'B';switch (grade) {case 'A' :printf("很棒!\n");break;case 'B' :case 'C' :printf("做得好\n");break;case 'D' :printf("您通过了\n");break;case 'F' :printf("最好再试一下\n");break;default :printf("无效的成绩\n");}printf("您的成绩是 %c\n", grade);return 0;
}

5、嵌套 switch 语句

嵌套 switch 语句:可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

基本语法:

switch(ch1) {case 'A': printf("这个 A 是外部 switch 的一部分" );switch(ch2) {case 'A':printf("这个 A 是内部 switch 的一部分" );break;case 'B': /* 内部 B case 代码 */}break;case 'B': /* 外部 B case 代码 */
}

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 100;int b = 200;switch (a) {case 100:printf("这是外部 switch 的一部分\n");switch (b) {case 200:printf("这是内部 switch 的一部分\n");}}printf("a 的准确值是 %d\n", a);printf("b 的准确值是 %d\n", b);return 0;
}

在这里插入图片描述

6、三元运算符

基本语法:Exp1 ? Exp2 : Exp3;

  • ? 表达式的值是由 Exp1 决定的。
  • 如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。
  • 如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。

示例如下:

#include<stdio.h>int main() {int num;printf("输入一个数字 : ");scanf("%d", &num);(num % 2 == 0) ? printf("偶数") : printf("奇数");
}

二、C 循环语句

1、for 循环

for 循环:多次执行一个语句序列,简化管理循环变量的代码。

基本语法:

for ( init; condition; increment )
{statement(s);
}

示例如下:

#include <stdio.h>int main() {/* for 循环执行 */for (int a = 10; a < 20; a = a + 1) {printf("a 的值: %d\n", a);}return 0;
}

2、while 循环

while 循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。

基本语法:

while(condition)
{statement(s);
}

condition 可以是任意的表达式,当为任意非零值时都为 true。

  • 当条件为 true 时执行循环。
  • 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20) {printf("a 的值: %d\n", a);a++;}return 0;
}

3、do…while 循环

do…while 循环:do…while 循环是在循环的尾部检查它的条件。

基本语法:

do
{statement(s);}while( condition );

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* do 循环执行,在条件被测试之前至少执行一次 */do {printf("a 的值: %d\n", a);a = a + 1;} while (a < 20);return 0;
}

do…while 循环与 while 循环类似,两者的区别在于:

  • do…while 循环会确保至少执行一次循环体。
  • while 循环可能一次都不会执行循环体。

4、嵌套循环

嵌套循环允许我们可以在 while、for 或 do…while 循环内使用一个或多个循环。

示例如下:

#include <stdio.h>int main()
{int i=1,j;while (i <= 5){j=1;while (j <= i ){printf("%d ",j);j++;}printf("\n");i++;}return 0;
}

在这里插入图片描述

5、循环控制语句

循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。

5.1 break 语句

break 语句:终止循环或 switch 语句。

break 语句有下面两种用法:

  • 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  • 它可用于终止 switch 语句中的一个 case。

如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20) {printf("a 的值: %d\n", a);a++;if (a > 15) {/* 使用 break 语句终止循环 */break;}}return 0;
}

5.2 continue 语句

continue语句:告诉一个循环体立刻停止本次循环迭代(跳过当前循环),重新开始下次循环迭代。

  • 对于 for 循环,continue 语句执行后自增语句仍然会执行。
  • 对于 while 和 do…while 循环,continue 语句会重新执行条件判断语句。

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* do 循环执行 */do {if (a == 15) {/* 跳过迭代 */a = a + 1;continue;}printf("a 的值: %d\n", a);a++;} while (a < 20);return 0;
}

5.3 goto 语句

goto 语句:允许将控制无条件转移到同一函数内的被标记的语句。但是不建议在程序中使用 goto 语句。

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

基本语法:

goto label;
...;
...;
label: statement;

label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。

示例如下:

#include <stdio.h>int main() {/* 局部变量定义 */int a = 10;/* do 循环执行 */LOOP:do {if (a == 15) {/* 跳过迭代 */a = a + 1;goto LOOP;}printf("a 的值: %d\n", a);a++;} while (a < 20);return 0;
}

– 求知若饥,虚心若愚。

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

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

相关文章

解决使用flex布局引起的变形问题

只需在变形的样式中加以下代码&#xff0c;禁止拉伸就ok了 flex-shrink: 0;

ipaguard界面概览

ipaguard界面概览 ipaguard界面分左右2块&#xff1a;左边菜单导航栏&#xff0c;右边的功能区 左侧菜单&#xff1a;按模块分成启动界面&#xff0c;代码模块&#xff0c;文件模块&#xff0c;重签名与测试模块 右侧主功能区会随着功能变化&#xff0c;但是整体分3块&#xf…

此芯科技加入百度飞桨硬件生态共创计划,加速端侧AI生态布局

近日&#xff0c;此芯科技&#xff08;上海&#xff09;有限公司&#xff08;以下简称“此芯科技”&#xff09;与百度签署硬件生态共创计划合作协议&#xff0c;正式加入由百度发起的硬件生态共创计划。双方将共同推动端侧AI和大模型在个人计算、车载计算以及元宇宙计算等领域…

读取txt文档并解析数据输出

读取如下内容&#xff1a; [INFO] [2023927 13:23:04.303] [estimator.cpp:1894]: XYZI: 1.70492 -1.33857 1.99379 134 [INFO] [2023927 13:23:04.303] [estimator.cpp:1894]: XYZI: 1.70944 -1.32323 1.99325 125 [INFO] [2023927 13:23:04.303] [estimator.cpp:1892]: 1695…

【发版】java项目一键式发版,一键式发版脚本,如何实现一键式发版

0. 手动打包&#xff0c;jar包生产后 jenkins打包。 1. Dockerfile 文件&#xff1a; FROM openjdk:8MAINTAINER "维护者 <email>" RUN echo "Asia/Shanghai" > /etc/timezoneLABEL description"descr ... " ADD xxx-1.0.0-SNAPSHOT.…

BiMPM实战文本匹配【下】

引言 这是BiMPM实战文本匹配的第二篇文章。 注意力匹配 如上图所示&#xff0c;首先计算每个正向(或反向)上下文嵌入 h i p → \overset{\rightarrow}{\pmb h_i^p} hip​→​(或 h i p ← \overset{\leftarrow}{\pmb h_i^p} hip​←​)与另一句的每个正向(或反向)上下文嵌入 …

python爬虫:JavaScript 混淆、逆向技术

Python爬虫在面对JavaScript混淆和逆向技术时可能会遇到一些挑战&#xff0c;因为JavaScript混淆技术和逆向技术可以有效地阻止爬虫对网站内容的正常抓取。以下是一些应对这些挑战的方法&#xff1a; 分析网页源代码&#xff1a;首先&#xff0c;尝试分析网页的源代码&#xf…

redis实现布隆过滤器

1 概述 布隆过滤器是一种基于概率的数据结构&#xff0c;用于判断一个元素是否存在于一个集合中。相比于传统的数据结构&#xff0c;布隆过滤器具有占用空间少、查询速度快的特点&#xff0c;常被用于缓存、爬虫去重等场景。Redis 作为一款流行的 NoSQL 数据库&#xff0c;也提…

计算机图像处理-直方图均衡化

直方图均衡化 直方图均衡化是图像灰度变换中有一个非常有用的方法。图像的直方图是对图像对比度效果上的一种处理&#xff0c;旨在使得图像整体效果均匀&#xff0c;黑与白之间的各个像素级之间的点分布更均匀一点。通过这种方法&#xff0c;亮度可以更好地在直方图上分布。 …

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP)

2009&#xff0d;2018年31省份旅游收入&#xff08;入境、国内、总收入&#xff1b;第三产值&#xff1b;GDP&#xff09; 1、时间&#xff1a;2009-2018年 2、指标&#xff1a; 汇率、入境旅游收入&#xff08;万美元&#xff09;、国内旅游收入&#xff08;亿元&#xff0…

IM同步服务

设计概述 后台同步方案的设计就是数据存储结构的设计&#xff0c;如何快速体现“信息变化”&#xff0c;如何快速计算出“变化信息”。后台数据存储结构是由同步协议中同步契约决定的。 设计方案 该方案的同步是按照业务粒度来划分&#xff0c;只需要同步sdk要求同步的数据。…

MATLAB算法实战应用案例精讲-【优化算法】季节优化算法(SOA)(附MATLAB代码实现)

前言 世界上许多地方一年有四个季节:春、夏、秋、冬。每个季节的天气都不一样。随着天气的变化,生物,尤其是树木会改变它们的行为来适应天气。森林中的每一个个体都被称为一棵树。在满足终止条件之前,森林中的树木通过类似于自然界树木生命周期的四种操作:更新、竞争、播种…

中秋节快乐

中秋节快乐&#xff0c;国庆节快乐

架构案例2022(四十二)

促销管理系统 某电子商务公司拟升级其会员与促销管理系统&#xff0c;向用户提供个性化服务&#xff0c;提高用户的粘性。在项目立项之初&#xff0c;公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性&#xff0c;由于当前用户规模不大&#xff0c;业务也相对…

第40节——路由初识,定义路由组件

文档地址 http://www.reactrouter.cn/docs/getting-started/tutorial version V6.x 一、什么是路由 前端路由指的是一种将浏览器URL与特定页面或视图关联起来的技术。在传统的Web开发中&#xff0c;当用户点击链接或者输入URL时&#xff0c;服务器会接收到请求并返回相应的…

专栏更新情况:华为流程、产品经理、战略管理、IPD

目录 前言 01 华为流程体系入门课 CSDN学院 02 产品经理进阶课 CSDN学院 03 BLM 战略方法论进阶课 04 IPD 进阶 100 例专栏 作者简介 前言 已上线四大课程专栏更新情况&#xff1a; 01 华为流程体系入门课&#xff08;视频图文&#xff09;&#xff1b; 02 硬件产品经…

安防监控产品经营商城小程序的作用是什么

安防监控产品覆盖面较大&#xff0c;监控器、门禁、对讲机、烟感等都有很高用途&#xff0c;家庭、办公单位各场景往往用量不少&#xff0c;对商家来说&#xff0c;市场高需求背景下也带来了众多生意&#xff0c;但线下门店的局限性&#xff0c;导致商家想要进一步增长不容易。…

C++之容器类有趣的实验(二百四十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

无线WIFI工业路由器可用于楼宇自动化

钡铼4G工业路由器支持BACnet MS/TP协议。BACnet MS/TP协议是一种用于工业自动化的开放式通信协议&#xff0c;被广泛应用于楼宇自动化、照明控制、能源管理等领域。通过钡铼4G工业路由器的支持&#xff0c;可以使设备间实现高速、可靠的数据传输&#xff0c;提高自动化水平。 钡…

Kubernetes(k8s)上搭建一主两从的mysql8集群

Kubernetes上搭建一主两从的mysql8集群 环境准备搭建nfs服务器安装NFS暴露nfs目录开启nfs服务器 安装MySQL集群创建命名空间创建MySQL密码的Secret安装MySQL主节点创建pv和pvc主节点的配置文件部署mysql主节点 安装第一个MySQL Slave节点创建pv和pvc第一个从节点配置文件部署my…