C语言分支和循环(2)

 我的相关博客:

C语言的分支与循环(1)

    

 1.switch语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 else   if 改成更易⽤、可读性更好的形式

switch (expression)
{
case value1:statement1;break;
case value2:statement2;break;
default: statement3;break;
}

上面代码中,value1,value2对应的是expression的值,如果expression的值符合 value1,则进入statement1,执行其中的语句,紧接着遇到break,退出这个switch

如果expression的值符合value2,则进入statement2,执行其中的语句,紧接着遇到break,退出这个switch

而上面的default,指的是value1、和value2以外的所有情况,都会进入statement3,执行其中的语句

注意:

switch 后的 expression 必须是整型表达式
case   后的值必须是整形常量表达式 

2.if语句和switch语句的对比 

 实例::输⼊任意⼀个整数值,计算除2之后的余数

使用if语句时:

int n = 0;
scanf("%d", &n);
if (n % 2 == 0)printf("整除,余数为0\n");
elseprintf("余数是1\n");

而使用switch语句改写,则: 

int n = 0;
scanf("%d", &n);
switch (n % 2)
{
case 0:printf("整除,余数为0\n");break;
case 1:printf("余数是1\n");break;
}

 需要注意的是:

case和后边的数字之间必须有空格

每⼀个 case 语句中的代码执⾏完成后,需要加上break ,才能跳出这个switch语句

3.switch中的break

switch中的break非常重要,是正确跳出switch的关键

如果没有break,则执行相应的一条语句后,对之后的每一个case中的语句都会执行 

如下面这个例子: 

printf("输入1~7的数字,打印星期几\n");
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:printf("星期一\n");
case 2:printf("星期二\n");
case 3:printf("星期三\n");
case 4:printf("星期四\n");
case 5:printf("星期五\n");
case 6:printf("星期六\n");
case 7:printf("星期天\n");
default:printf("输入错误\n");
}

输入:2 

输出 :

​ 

如果要实现正确的功能,需要给加上 break,正确的代码为:

printf("输入1~7的数字,打印星期几\n");
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
case 7:printf("星期天\n");break;
default:printf("输入错误\n");break;
}

 当然,我们也可以依此实现一些功能,如下面这个代码:

输入1-5,输出:工作日

输入6-7,输出:休息日 

int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\n");break;
case 6:
case 7:printf("休息日\n");break;
default:printf("输入错误\n");
}

 4.switch语句中的default

 在switch语句中,default归纳为 除了case之外的所有情况

满足这个条件就会进入default中,default可以理解为:非目标值,或者无用值

关于default与case不需要考虑顺序,可以case在前,也可以default在前,不影响代码效果的实现,一般习惯将default放在最后

5.循环 

 C语言提供了3种循环,分别是:for循环、while循环、do-while循环

5.1for循环 

for(语句1;语句2;语句3) 

{

        语句4;

}

for循环的小括号里面有3条语句 ,部分语句可以为空,但是必须有两个分号

一次循环语句的执行顺序为:

语句1——>语句2——>语句4——>语句3 

如果语句循环多次,执行的顺序为: 

 语句1——>语句2——>语句4——>语句3——>语句1——>语句2——>语句4......

(语句1 ,2,4,3...1,2,4,3的循环)

这个执行顺序是固定的,根据这个逻辑,可以完成大量的循环运算

 实例:计算1到10相加的和

int sum = 0;
for (int i = 1; i <= 10; i++)
{sum = sum + i;
}
printf("相加的和为%d", sum);

运行结果:

相加的和为55 

上面循环停止的关键在于 i <= 10 ,所以语句2一般是循环停止的条件

 实例:打印1到10

for (int i = 1; i <= 10; i++)
{printf("%d ", i);
}

 运行结果:

1 2 3 4 5 6 7 8 9 10

5.2while循环 

while 循环的语法结构 和 if 非常相似 

if(表达式)

{

        语句;

while(表达式)

{

        语句;

while循环的执行顺序为:表达式——>语句——>表达式——>语句——>...... 

⾸先上来就是执⾏判断表达式,若表达式的值为0,循环直接结束

表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次循环语句

实例:计算1到10相加的和(可与上面的for循环对比)

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

运行结果:

和为55 

 while循环和for循环对比:

while与for循环都有:初始化、判断,和调整这三个部分,但是for循环⾮常集中,便于代码的维护 

5.3do while循环 

do while语句的使用较少,语法是:

do

{

        语句;

}while(表达式) 

do while循环和while循环非常相似,只是先执行了一次语句再判断表达式是否成立

因此,即使表达式不成立,也会先执行一次语句(与C语言的代码,从上往下执行相对应)

如: 

int n = 0;
do
{printf("执行\n");
} while (n);

运行结果:

执行 

6.break和continue

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象

C语⾔中提供了 break 和 continue 两个关键字,就是应用到循环来终止的

6.1while循环中的break和continue 

先看一个实例:

1.break

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

运行结果:1 2 3 4 

2.continue 

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

运行结果:1 2 3 4 (死循环)

上面代码中的if没有使用花括号{ },只能控制一条语句,即break,或者continue,而之后的代码不受if的控制 

通过对比,不难看出, while 中的 break 跳过相应的while整个循环

而 while 中的 continue 只是跳过本次循环,也跳过了i = i + 1这条语句,因此,i一直停留在4,陷入死循环

 6.2for循环中的break和continue

1.break

#include<stdio.h>
int main()
{for (int i = 1; i <= 10; i++){if (i == 5)break;printf("%d ", i);}return 0;
}

 这里break的含义是跳过for循环,因此,运行结果与while中的break相同

运行结果:1 2 3 4 

2.continue 

#include<stdio.h>
int main()
{for (int i = 1; i <= 10; i++){if (i == 5)continue;printf("%d ", i);}return 0;
}

 运行结果:1 2 3 4 6 7 8 9 10

这里的continue和while中的continue相同,跳过本次循环,但是由于i++还是会执行

所以 i 可以继续自增,往后执行

6.3do while中的break和continue 

do while中的 break 和 continue 与 while 中的几乎一模一样

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

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

相关文章

亿发:制造型企业信息化规划——从破冰到全面落地

在制造型企业中&#xff0c;信息化规划的落地是一个复杂而关键的过程。尽管规划和蓝图可能已经制定完毕&#xff0c;但如何成功地实施信息化才是关键所在。本文将详细介绍制造型企业信息化规划的落地过程&#xff0c;通过三个周期逐步推进&#xff0c;最终实现信息化与自动化的…

深度学习知识与心得

目录 深度学习简介 传统机器学习 深度学习发展 感知机 前馈神经网络 前馈神经网络&#xff08;BP网络&#xff09; 深度学习框架讲解 深度学习框架 TensorFlow 一个简单的线性函数拟合过程 卷积神经网络CNN&#xff08;计算机视觉&#xff09; 自然语言处理NLP Wo…

OpenAI助手API接入-问答对自动生成

支持GPT-3.5-Turbo, GPT-4o, GPT-4-Turbo import json import openai from pathlib import Path import os client openai.OpenAI(base_urlbase_url, api_keyapi_key) file client.files.create( fileopen("H3.pdf", "rb"), purposeassistants ) …

成功解决“ModuleNotFoundError: No Module Named ‘utils’”错误的全面指南

成功解决“ModuleNotFoundError: No Module Named ‘utils’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No Module Named utils这样的错误通常意味着Python解释器无法找到名为utils的模块。这可能是由于多种原因造成的&#xff0c;比如模块确实不存…

念念不忘,必有回响 的 echo

念念不忘&#xff0c;必有回响 的 echo 念念不忘&#xff0c;必有回响 的 echo几个示例更多信息 念念不忘&#xff0c;必有回响 的 echo echo命令用于在终端设备上输出字符串或变量的值&#xff0c;类似于Python的print和C语言的printf&#xff0c;是Linux系统中最常用的命令…

深度学习笔记:0.cuda安装,成功

B站上说&#xff1a;cs上骗子太多。文章太久&#xff0c;我深以为然。用了一天。才装好。其实很简单。 CUDA安装教程&#xff08;超详细&#xff09;-CSDN博客文章浏览阅读1w次&#xff0c;点赞5次&#xff0c;收藏56次。windows10 版本安装 CUDA &#xff0c;首先需要下载两个…

【并发程序设计】总篇集(八万字)

11_Concurrent_Programing 1.进程概念 在Linux中&#xff0c;进程是操作系统分配资源和调度运行的基本单位。 Linux中的进程有以下用处&#xff1a; 提高CPU利用率&#xff1a;通过进程的并发执行&#xff0c;可以让多个程序同时利用计算机的资源&#xff0c;这样每个用户都…

部署metrics-server

kubeadm部署metrics-server 需求&#xff1a;生产环境是kubeadm部署的v1.22.2版本的k8s&#xff0c;统计资源时发现这套环境没有部署metrics-server这个服务&#xff0c;今天来部署一下 1、在github社区找到这个项目并下载 rootjumpserver-cmcc:~# wget https://github.com/…

你需要知道关于 Java 线程一些最基本的事情

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

《SpringBoot3+Vue3实战》系列文章目录

前后端分离&#xff08;Frontend-Backend Separation&#xff09;是一种软件架构设计模式&#xff0c;它将传统的Web应用中的前端&#xff08;用户界面&#xff09;和后端&#xff08;服务器逻辑和数据存储&#xff09;从应用层面进行解耦&#xff0c;使得两者可以独立地开发、…

Linux CFS调度器简介

文章目录 前言一、概要二、实现2.1 简介2.2 算法实现2.3 内核源码 三、特点四、调度策略五、调度类参考资料 前言 早期的Linux调度器采用了简化的设计&#xff0c;显然并不针对具有许多处理器甚至超线程的大规模架构。Linux 1.2调度器使用循环队列对可运行任务进行管理&#x…

昆仑万维官宣开源2000亿稀疏大模型Skywork-MoE

6月3日&#xff0c;昆仑万维宣布开源2千亿稀疏大模型Skywork-MoE&#xff0c;性能强劲&#xff0c;同时推理成本更低。 据「TMT星球」了解&#xff0c;Skywork-MoE基于之前昆仑万维开源的Skywork-13B模型中间checkpoint扩展而来&#xff0c;是首个完整将MoE Upcycling技术应用…

北京Profinet转Modbus网关配置调试详解

一、背景&#xff1a;在工业自动化系统中&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;与流量计之间的通信是非常重要的&#xff0c;以确保数据准确传输并实现控制功能。然而&#xff0c;由于PLC和流量计可能采用不同的通信协议&#xff08;如Profinet和Modbus&…

探索Java的DNA-JVM字节码深度解析

引言 在Java的世界里&#xff0c;JVM&#xff08;Java虚拟机&#xff09;是我们程序运行的心脏。而字节码&#xff0c;作为JVM的血液&#xff0c;携带着程序的执行指令。今天&#xff0c;我们将深入探索Java字节码的奥秘&#xff0c;一窥JVM如何将人类可读的代码转化为机器可执…

【小白向】微信小程序解密反编译教程

# 前言 最近笔者有做到微信小程序的渗透测试&#xff0c;其中有一个环节就是对微信小程序的反编译进行源码分析&#xff0c;所谓微信小程序反编译&#xff0c;就是将访问的小程序进行反向编译拿到部分源码&#xff0c;然后对源码进行安全审计&#xff0c;分析出其中可能存在的…

图形学初识--颜色混合

文章目录 前言正文为什么要有颜色混合&#xff1f;颜色混合常见实现方式&#xff1f;上述颜色混合注意点 结尾&#xff1a;喜欢的小伙伴点点关注赞哦! 前言 本章节补充一下颜色混合的内容&#xff0c;主要包含&#xff1a;为什么要有颜色混合&#xff1f;颜色混合常实现方式&a…

Centos 7 安装刻录至硬件服务器

前言 在日常测试中&#xff0c;会遇到很多安装的场景&#xff0c;今天给大家讲一下centos 7 的安装&#xff0c;希望对大家有所帮助。 一.下载镜像 地址如下&#xff1a; centos官方镜像下载地址https://www.centos.org/download/ 按照需求依次点击下载 二.镜像刻录 镜像刻…

idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇

历史文章&#xff08;文章累计500&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

Shopify 独立站监控观测最佳实践

Shopify 简介 Shopify 是一个全球领先的电子商务平台&#xff0c;它为商家提供了一整套在线商店解决方案。自 2006 年成立以来&#xff0c;Shopify 已经帮助数百万商家在全球范围内建立和发展他们的在线业务。 监控观测 Shopify 站点对于确保业务连续性、优化用户体验和提高运…

Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。在收集的信息中&#xff0c;应该有一条是搜索信息的时间。 1. date命令 的功能、格式和选项说明 我们可以使用命令 date --help 来查看 d…