C++switch陈述

news2025/1/13 13:51:25

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.coloradmin.cn/o/1819763.html

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

相关文章

文件没有权限问题:cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied

问题描述 执行 aem bootstrap start --plus 命令启动 Dreamview 提示错误&#xff1a; /bin/sh: 1: cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied [ERROR] Failed to start Dreamview. Please check /opt/apollo/neo/data/log/dreamview.log or /op…

Windows环境RocketMQ启动broker时启动失败

在输入”start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnabletrue“命令启动失败后&#xff0c;会出现如下图所示的样子。 但我们重新启动电脑、重新启动RocketMQ或者杀死进程等方法都对此无效&#xff0c;还是没有启动成功。 启动失败的原因&#xff1a; 中途断网或…

Kaggle -- Multi-Class Prediction of Obesity Risk

使用简单的决策树进行分类&#xff0c;代码如下&#xff1a; import pandas as pd import numpy as np from sklearn.preprocessing import OneHotEncoder from sklearn.model_selection import train_test_splitdf pd.read_csv("train.csv")df[Gender] df[Gender…

React 中的 Lanes

React 中有一个 Lane 的概念&#xff0c;Lane 就像高速路上的不同车道&#xff0c;具有不同优先级&#xff0c;在 React Lane 通过一个 32 位的二进制数来表示。越小优先级别越高&#xff0c;SyncLane 级别最高。用二进制存储的方式&#xff0c;可以通过逻辑操作快速判断 Lane …

vite.config.js如何使用env的环境变量

了解下环境变量在vite中 官方文档走起 https://cn.vitejs.dev/guide/env-and-mode.html#env-variables-and-modes 你见到的.env,.env.production等就是放置环境变量的 官方文档说到.env.[mode] # 只在指定模式下加载,比如.env.development只在开发环境加载 至于为什么是deve…

算法课程笔记——线段树维护矩阵

算法课程笔记——线段树维护矩阵 2

【每日一练 】day2

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

代理IP常见问题解答,新手必看手册

代理IP在互联网数据收集和业务开展中发挥着重要作用&#xff0c;它充当用户客户端和网站服务器之间的“屏障”&#xff0c;可以保护用户的真实IP地址&#xff0c;并允许用户通过不同的IP地址进行操作。然而&#xff0c;在使用代理IP的过程中&#xff0c;用户经常会遇到一些问题…

2.spring cloud gateway 源码编译

spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …

javaWeb项目-ssm+vue中国风音乐推介网站功能介绍

本项目源码&#xff1a;java-ssmvue中国风音乐推介网站源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、…

setOptMode -holdTargetSlack与-holdSlackFixingThreshod

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 -holdTargetSlack与-holdSlackFixingThreshod这两个option都是针对hold slack的&#xff0c;前者限制slack的目标&#xff0c;默认是0&#xff0c;也就是说工具尽可能会收敛时序…

vivado HW_SYSMON

描述 系统监视器HW_SYSMON是Xilinx上的一个模数转换器&#xff08;ADC&#xff09;电路 用于测量诸如温度和电压之类的操作条件的设备。这个 HW_SYSMON通过片上温度和电源监控物理环境 传感器。ADC为一系列应用提供了高精度模拟接口。这个 ADC最多可访问17个外部模拟输入通道。…

分类模型:MATLAB判别分析

1. 判别分析简介 判别分析&#xff08;Discriminant Analysis&#xff09; 是一种统计方法&#xff0c;用于在已知分类的样本中构建分类器&#xff0c;并根据特征变量对未知类别的样本进行分类。常见的判别分析方法包括线性判别分析&#xff08;Linear Discriminant Analysis, …

MySQL workbench:E-R 图与 mysql 脚本之间相互转换

我们都知道 MySql 是关系型数据库的开发语言&#xff0c;描述一个关系型数据库的方式有 E-R 图法。MySql workbench 是 MySql 社区版自带的免费工具。也是比较好用的图形界面客户端管理工具。支持正向及逆向工具。 MySql workbench 下载安装 官方下载地址&#xff1a;https://…

深度学习长文|使用 JAX 进行 AI 模型训练

引言 在人工智能模型的开发旅程中&#xff0c;选择正确的机器学习开发框架是一项至关重要的决策。历史上&#xff0c;众多库都曾竞相争夺“人工智能开发者首选框架”这一令人垂涎的称号。&#xff08;你是否还记得 Caffe 和 Theano&#xff1f;&#xff09;在过去的几年里&…

Camtasia Studio 2024软件最新版下载及详细安装教程

​Camtasia是一款屏幕录制和视频剪辑软件&#xff0c;教授课程&#xff0c;培训他人&#xff0c;以更快的速度和更吸引人的方式进行沟通和屏幕分享&#xff0c;使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。 让您用更短的时间创作更多的视频&#xff0…

java:【@Import】和【ImportSelector】的简单示例

# 代码结构 # 项目【myBeanBranch】 【pom.xml】 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.15.RELEASE</version> </dependency> <dependency><g…

聚鼎科技:装饰画行业新手怎么入局

进入装饰画行业&#xff0c;对于新手而言既是机遇也是挑战。此行业融合了艺术感与市场需求&#xff0c;要求从业者不仅需要具备良好的审美能力&#xff0c;还要了解市场动态&#xff0c;掌握一定的营销策略。 明确定位是入局的第一步。新手应该确定自己想要涉足的装饰画领域&am…

杂波场景下的CA CFAR、SO CFAR、GO CFAR目标检测【附MATLAB代码】

文章来源&#xff1a;微信公众号&#xff1a;EW Frontier 主要内容 clc; clear all; ​ v11;%杂波边缘方差 v215; noise_db110; noise_db220; noise_p110.^(noise_db1./10);%噪声功率 noise_p210.^(noise_db2./10); c110^(noise_db1/10)random(Normal,0,v1,1,200); % 这里…

纯干货:css3单边倾斜-异形tab切换的实现方法

先来看效果: 实际实现中,第一个tab项是只有右边是倾斜的,左边是竖直的,跟我们平时的写法不同。 实现方法: 这里的方法就是用before和after叠加实现。 Html: <div class="bd"><div class="tabs"><div class="tab tab1 act…