C++switch陈述

C++ 使用关键字 switch、case、default对一个常数执行不同的分流,这构成多重选择的结构,形式如下

简单来说,switch后头接一小括弧,小括弧内为一常数运算式,计算出常数值若与其后case的位标(label) 相符,就会执行该case的陈述。case的位标也可以是常数运算式,不过通常直接用常数值。

如下列程式,假设有一位元编码储存在整数阵列(array) data之中,程式累计0与1各自出现的数目

#include <iostream>int main() {int data[] = {1, 0 ,0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1};int one_count = 0;int zero_count = 0;int i;for (i = 0; i <= 15; i++) {switch (data[i]) {case 0: zero_count++;break;case 1: one_count++;break;}}std::cout << "There are " << zero_count;std::cout << " 0s, and " << one_count;std::cout << " 1s in data." << std::endl;return 0;
}

编译后执行,结果如下

$ g++ u0503_1.cpp
$./a.out 复制代码
数据中有 7 个 0 和 9 个 1。
$

第 10 行

switch (data[i]) {

data[i]会取得该阵列的第i个元素值,此为常数运算式。

由于情况只有0与1,因此上列程式只用0与1两个位标。另外第13 行及第17 行都有

break;

关键字break是用来暂时中断程式的执行,放在回圈内遇到break就会跳出回圈,而在switch里头的位标后面则是可以不让程式继续往下检查其他的位标,因为检查到相符的位标,程式即可暂停,若是没有用break,程式会持续执行到右大括弧},也就是switch陈述结束的地方,这样容易增加额外的程式执行时间。

以下程式计算字串中母音字母出现的次数,若非母音字母则用default位标执行另外的计算

#include <iostream>int main() {char saying[] = {'N', 'e', 'v', 'e', 'r', ' ', 'p', 'u', 't', ' ', 'o', 'f', 'f', ' ', 't', 'i','l', 'l', ' ', 't', 'o', 'm', 'o', 'r', 'r', 'o', 'w', ' ', 'w', 'h', 'a', 't', ' ', 'y', 'o', 'u', ' ', 'c', 'a', 'n', ' ', 'd', 'o', ' ', 't', 'o', 'd', 'a', 'y', '.'};int aV, eV, iV, oV, uV, other, i;aV = eV = iV = oV = uV = 0;other = i = 0;while (saying[i] != '\0') {switch(saying[i]) {case 'A': case 'a':aV++;break;case 'E': case 'e':eV++;break;case 'I': case 'i':iV++;break;case 'O': case 'o':oV++;break;case 'U': case 'u':uV++;break;default:other++;break;}i++;}std::cout << "a: " << aV;std::cout << std::endl;std::cout << "e: " << eV;std::cout << std::endl;std::cout << "i: " << iV;std::cout << std::endl;std::cout << "o: " << oV;std::cout << std::endl;std::cout << "u: " << uV;std::cout << std::endl;std::cout << "other: " << other;std::cout << std::endl;return 0;
}

编译后执行,结果如下

$ g++ u0503_2.cpp
$./a.out 复制代码
答:3
电子:2
我:1
○:7
于:3
其他: 39
$

default位标下的break其实可有可无,但习惯上每个case都有给一个break,所以default后加上break只是相对看起来整齐而已。

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

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

相关文章

[深度优先搜索DFS]迷宫问题

描述 定义一个二维数组&#xff1a; int maze[5][5] {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,}; 它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0c;0表示可以走的路&#xff0c;只能横着走或竖着走&#xff0c;不能斜着走&#xff0…

Prometheus入门

Prometheus入门 Setup Reference:https://prometheus.io/docs/introduction/overview/ exporters:你可以部署在你想要获取metrics的应用旁&#xff0c;接收Prometheus请求&#xff0c;从应用程序中收集数据并转换为正确的格式&#xff0c;最后返回给Prometheus;Service Dis…

创建百度百科词条要多少钱?看这篇

“百度百科词条人人可编辑&#xff0c;词条创建和修改均为免费&#xff0c;不存在官方及代理商付费代编。” 是的&#xff0c;百度百科免费开放&#xff0c;任何人都可以自己做&#xff0c;但是作为一个给上百家企业和个人创建百度百科词条的专业人士来说&#xff0c;给大家一…

面试题——RabbitMQ

★1.如何保证消息的幂等性&#xff1f;&#xff08;如何避免消息重复投递&#xff09; 生产端: 在消息发送前&#xff0c;先查询数据库此消息是否被处理过。处理过则忽略、否则继续处理&#xff0c;并在处理完成后修改状态为已处理。 消费端: 每个消息都生成全局唯一ID或业务I…

模型预测控制MPC详解(附带案例实现)

模型预测控制MPC详解&#xff08;附带案例实现&#xff09; 文章目录 模型预测控制MPC详解&#xff08;附带案例实现&#xff09;1. 最优控制问题2. 什么是MPC3. 二次规划Quadratic Programming4. MPC为什么可以转换成QP问题&#xff08;推导过程&#xff09;5. MPC总结5.1 MPC…

QT中QSettings的使用系列之四:QSettings与操作QJson(registerFormat())

1、核心代码 #include "widget.h" #include "ui_widget.h" #include <QSettings> #include <QJsonObject> #include <

基于51单片机的篮球计分器设计

一.硬件方案 本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。 电路主要由STC89C52单片机最小系统数码管显示模块数码管驱动模块蜂鸣器模块按键模块&#xff1b; 二.设计功能 &…

哔哩哔哩视频URL解析原理

哔哩哔哩视频URL解析原理 视频网址解析视频的原理通常涉及以下几个步骤&#xff1a; 1、获取视频页面源代码&#xff1a;通过HTTP请求获取视频所在网页的HTML源代码。这一步通常需要处理反爬虫机制&#xff0c;如验证码或用户登录。 2、解析页面源代码&#xff1a;分析HTML源代…

064、Python 可变参数和关键字参数

在编写函数时&#xff0c;我们可能会存在不确定传入参数数量的情况。那么我们可以使用可变数量的参数。函数中可变数量的参数包括可变参数和关键字参数。 1、可变参数&#xff08;*args&#xff09;&#xff1a; 可变参数允许函数接受任意数量的位置参数。在函数定义中&#…

Transformer学习理解

1.前言 本文介绍当下人工智能领域的基石与核心结构模型——Transformer&#xff0c;为什么说它是基石&#xff0c;因为以ChatGPT为代表的聊 天机器人以及各种有望通向AGI&#xff08;通用人工智能&#xff09;的道路上均在采用的Transformer。 Transformer也是当下NLP任…

java设计原则

1、开闭原则 定义&#xff1a;类&#xff0c;模块&#xff0c;函数对扩展开放对修改关闭。如工厂模式 对扩展开放&#xff1a;模块对扩展开放就意味着&#xff0c;当需求变化时&#xff0c;可以对模块进行扩展&#xff0c;使其满足具有新需求的功能&#xff0c;换句话说就是模…

让我们拯救数学

一&#xff0c; 前言 数学特别是数论面临生死存亡&#xff0c;100年的数论在错误的道路上运行&#xff0c;已经把整个数学颠覆。从挪威数学家v布龙&#xff0c;到意大利数学家邦别里&#xff0c;再到德国数学家法尔廷斯&#xff0c;英国数学家安德鲁怀尔斯&#xff0c;以及中国…

【上海交大】博士生年度进展报告模板

上海交通大学 博士生年度进展报告模板 比较不好找&#xff0c;在交我办中发起申请流程后才能看到链接&#xff0c;链接如下&#xff1a; https://www.gs.sjtu.edu.cn/xzzx/pygl/15

爬取CSDN博文到本地(包含图片,标签等信息)

文章目录 csdnToMD改进将CSDN文章转化为Markdown文档那有什么办法快速得到md文档&#xff1f;例如&#xff1a;获取单个文章markdown获取所有的文章markdown 项目中待解决的问题 csdnToMD 项目原作者&#xff1a;https://gitee.com/liushili888/csdn-is—mark-down 改进后仓库…

vue脚手架 项目打包

目录 01 在脚手架中使用jquery 02 项目的打包 03 ELement UI 框架 01 在脚手架中使用jquery 脚手架中使用jquery的步骤: 1.npm i jquery --save 2.在使用jq的组件里面引入jq 3.import $ from jquery 4.正常使用 02 项目的打包 1.npm run build 项目启动不启动都可以打包 2.…

爬虫补环境,ES6 Class在环境模拟中的应用与优势

相比于使用传统的Object实现补环境框架结构&#xff0c;使用 ES6 的 Class 具有以下优势&#xff1a; 代码维护更方便&#xff1a;Class的语法更简洁直观&#xff0c;方便开发者阅读和维护。组织结构更清晰&#xff1a;Class提供了明确的层次结构&#xff0c;有助于代码的模块…

Z语言学习——基于通讯案例

目录 1数据类型 2初始状态 3 Alice的消息发送 4 Bob接收与发送消息 5 Alice接收消息 6消息的增删改查 6.1 删除消息 6.2查询消息 6.3修改/增加消息 7定理证明——重要目的 案例背景&#xff1a; (1)构建一个交互式的通讯方案&#xff1b; (2)攻击者控制了所有的通讯…

tsf-consul的使用

在腾讯云微服务平台TSF中使用Consul作为服务发现组件,通常需要遵循以下步骤: ### 1. 创建应用 首先,您需要在TSF控制台创建一个应用。在创建应用时,选择合适的业务类型、开发语言、开发框架等信息。对于使用Consul作为服务发现组件的Spring Cloud应用,您需要选择“业务应…

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前&#xff0c;正在看博客的您先来…

Element-UI实现el-dialog弹框拖拽功能

在实际开发中&#xff0c;会发现有些系统&#xff0c;弹框是可以在浏览器的可见区域自由拖拽的&#xff0c;这极大方便用户的操作。但在查看Element-UI中弹框&#xff08;el-dialog&#xff09;组件的文档时&#xff0c;发现并未实现这一功能。不过也无须担心&#xff0c;vue中…