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和大模型在个人计算、车载计算以及元宇宙计算等领域…

BiMPM实战文本匹配【下】

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

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

直方图均衡化 直方图均衡化是图像灰度变换中有一个非常有用的方法。图像的直方图是对图像对比度效果上的一种处理&#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…

中秋节快乐

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

架构案例2022(四十二)

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

聚观早报 | 飞书签约韵达速递;蔚来首颗自研芯片“杨戬”量产

【聚观365】9月22日消息 飞书签约韵达速递 蔚来首颗自研芯片“杨戬”10月量产 靳玉志接任华为车 BU CEO 亚马逊发布全新Alexa语音助手 OpenAI推出图像生成器DALL-E 3 飞书签约韵达速递 近日&#xff0c;国内物流服务公司韵达快递宣布全员上飞书。飞书解决方案副总裁何斌表…

Redis学习第九天

今天是Jedis&#xff01;作者的Redis在游戏本上&#xff0c;但是Java的IDEA总是下载不了&#xff0c;所以只能作为概念听一听了&#xff0c;目前无法做到实操。 Jedis概念 Jedis实操 首先要保证redis的服务器开启&#xff0c;然后引入jedis依赖&#xff0c;最后通过服务器的I…

Java新领域—设计

SSM SpringBoot 微信小程序 JSP 安卓

人工智能安全-2-非平衡数据处理(2)

5 算法层面 代价敏感&#xff1a;设置损失函数的权重&#xff0c;使得少数类判别错误的损失大于多数类判别错误的损失&#xff1b; 单类分类器方法&#xff1a;仅对少数类进行训练&#xff0c;例如运用SVM算法&#xff1b; 集成学习方法&#xff1a;即多个分类器&#xff0c;然…

大模型lora微调-chatglm2

通义千问大模型微调源码&#xff08;chatglm2 微调失败&#xff0c;训练通义千问成功&#xff09;&#xff1a;GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)Easy-to-use LLM fine-tun…

[JAVAee]MyBatis

目录 MyBatis简介 MyBatis的准备工作 框架的添加 连接数据库字符串的配置 MyBatis中XML路径的配置 ​编辑 MyBatis的使用 各层的实现 进行数据库操作 增加操作 拓展 修改操作 删除操作 查询操作 结果映射 单表查询 多表查询 like模糊查询 动态SQL / MyBa…

delphi 11 安装失败

delphi 11 安装遇到如下图&#xff1a; 解决方法&#xff1a; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 以管理员身份重新安装&#xff01;&#xff01;&#xff01; 管理员身份&#xff01;&…