「C++系列」判断

news2024/11/16 8:20:09

文章目录

  • 一、判断
    • 1. `if` 语句
    • 2. `if-else` 语句
    • 3. `if-else if-else` 语句链
    • 4. `switch` 语句
    • 注意事项
  • 二、应用场景
    • 1. 用户输入验证
    • 2. 决策逻辑
    • 3. 循环控制
    • 4. 排序算法
  • 三、相关链接

一、判断

在C++中,判断通常是通过条件语句来实现的,这些语句允许程序根据特定条件执行不同的代码块。C++提供了几种不同的条件语句来支持这种逻辑判断。

1. if 语句

if 语句是最基本的条件语句,用于基于单个条件执行代码块。

if (condition) {
    // 如果条件为真,则执行这里的代码
}

2. if-else 语句

if-else 语句在if语句的基础上增加了一个else部分,用于在条件为假时执行不同的代码块。

if (condition) {
    // 如果条件为真,则执行这里的代码
} else {
    // 如果条件为假,则执行这里的代码
}

3. if-else if-else 语句链

你可以将多个if-else语句链接起来,以测试多个条件。这被称为if-else if-else语句链。

if (condition1) {
    // 如果condition1为真,则执行这里的代码
} else if (condition2) {
    // 如果condition1为假但condition2为真,则执行这里的代码
} else {
    // 如果所有前面的条件都为假,则执行这里的代码
}

4. switch 语句

switch语句是另一种在C++中用于基于不同条件执行不同代码块的语句。它通常与枚举或整型表达式一起使用,但也可以通过类型转换与字符串等其他类型一起使用(尽管这需要C++17或更高版本的支持)。

switch (expression) {
    case value1:
        // 如果expression等于value1,则执行这里的代码
        break; // 使用break语句来避免执行下一个case的代码
    case value2:
        // 如果expression等于value2,则执行这里的代码
        break;
    // 可以有更多的case...
    default:
        // 如果没有任何case匹配,则执行这里的代码(可选)
}

注意事项

  • 在使用ifif-elseif-else if-else语句时,确保条件表达式能够清晰地反映你的意图。
  • switch语句中,每个case块后都应该有一个break语句,除非你确实希望执行下一个case块的代码(这种情况称为“case穿透”或“case fall-through”,但在实践中应谨慎使用)。
  • C++17引入了对switch语句中字符串和其他非整型条件的支持,但使用时需要确保编译器支持这一特性。
  • 在设计条件逻辑时,考虑代码的清晰性和可维护性,避免创建过于复杂的条件表达式。
    在这里插入图片描述

二、应用场景

在C++中,判断条件的应用场景非常广泛,几乎涵盖了所有需要基于特定条件执行不同逻辑的代码场景。以下是一些常见的应用场景及详细案例:

1. 用户输入验证

在接收用户输入时,常常需要验证输入是否满足特定条件,如是否为正数、是否在指定范围内等。

案例:验证用户输入的年龄是否合法(假设合法年龄为1到120岁)。

#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "请输入您的年龄:";
    cin >> age;

    if (age >= 1 && age <= 120) {
        cout << "您输入的年龄是合法的。" << endl;
    } else {
        cout << "您输入的年龄不合法,请重新输入。" << endl;
    }

    return 0;
}

2. 决策逻辑

在程序中,根据不同的条件执行不同的逻辑分支是常见的需求。

案例:根据用户的选择(通过输入数字1、2或3)执行不同的操作。

#include <iostream>
using namespace std;

int main() {
    int choice;
    cout << "请选择操作(1: 加法, 2: 减法, 3: 乘法):" << endl;
    cin >> choice;

    switch (choice) {
        case 1:
            cout << "执行加法操作。" << endl;
            break;
        case 2:
            cout << "执行减法操作。" << endl;
            break;
        case 3:
            cout << "执行乘法操作。" << endl;
            break;
        default:
            cout << "无效的选择,请重新输入。" << endl;
    }

    return 0;
}

3. 循环控制

在循环中,判断条件用于控制循环的继续或终止。

案例:使用while循环计算1到10的累加和。

#include <iostream>
using namespace std;

int main() {
    int sum = 0;
    int i = 1;

    while (i <= 10) {
        sum += i;
        i++;
    }

    cout << "1到10的累加和是:" << sum << endl;

    return 0;
}

4. 排序算法

在排序算法中,判断条件用于比较元素的大小,以决定元素的排序顺序。

案例(简化版):冒泡排序算法中的比较逻辑。

#include <iostream>
#include <vector>
using namespace std;

void bubbleSort(vector<int>& arr) {
    int n = arr.size();
    bool swapped;
    for (int i = 0; i < n-1; i++) {
        swapped = false;
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // 交换arr[j]和arr[j+1]
                swap(arr[j], arr[j+1]);
                swapped = true;
            }
        }
        // 如果没有发生交换,说明数组已经有序,可以提前结束
        if (!swapped) break;
    }
}

int main() {
    vector<int> arr = {64, 34, 25, 12, 22, 11, 90};
    bubbleSort(arr);

    cout << "Sorted array: \n";
    for (int i = 0; i < arr.size(); i++)
        cout << arr[i] << " ";
    cout << endl;

    return 0;
}

在这里插入图片描述

三、相关链接

  1. Visual Studio Code下载地址
  2. Sublime Text下载地址
  3. 「C++系列」C++简介、应用领域
  4. 「C++系列」C++ 基本语法
  5. 「C++系列」C++ 数据类型
  6. 「C++系列」C++ 变量类型
  7. 「C++系列」C++ 变量作用域
  8. 「C++系列」C++ 常量知识点-细致讲解
  9. 「C++系列」C++ 修饰符类型
  10. 「C++系列」一篇文章说透【存储类】
  11. 「C++系列」一篇文章讲透【运算符】
  12. 「C++系列」循环

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

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

相关文章

UDP报文结构详解:一篇文章带你搞懂

大家好呀!我是你们的老朋友小米,一个活泼开朗的29岁技术达人。今天我们来聊聊网络基础中的一个重要概念——UDP报文格式。相信很多小伙伴在学习网络编程或者网络协议时,都接触过UDP这个名词。UDP,全称是User Datagram Protocol(用户数据报协议),是一种无连接的传输层协议…

CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接&#xff1a;[BJDCTF2020]ZJCTF&#xff0c;不过如此 解题思路 访问靶场链接&#xff0c;出现的是一段php源码&#xff0c;接下来做一下代码审阅&#xff0c;发现这是一道涉及文件包含的题 主要PHP代码语义&#xff1a; file_get_contents($text,r); 把$text变量所…

物理站群多ip服务器如何租用

物理站群多IP服务器的租用是企业或网站管理者为了提升SEO排名、分散风险、增加网站稳定性和提高访问速度而采用的一种策略。下面是一套详细的科普指南&#xff0c;帮助你理解如何租用物理站群多IP服务器&#xff1a; 1. 需求分析 首先&#xff0c;明确你的具体需求&#xff0c;…

7月18日学习打卡,数据结构堆

hello大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有不…

简单工厂、工厂方法与抽象工厂之间的区别

简单工厂、工厂方法与抽象工厂之间的区别 1、简单工厂&#xff08;Simple Factory&#xff09;1.1 定义1.2 特点1.3 示例场景 2、工厂方法&#xff08;Factory Method&#xff09;2.1 定义2.2 特点2.3 示例场景 3、抽象工厂&#xff08;Abstract Factory&#xff09;3.1 定义3.…

uni-app学习HBuilderX学习-微信开发者工具配置

HBuilderX官网&#xff1a;简介 - HBuilderX 文档 (dcloud.net.cn)https://hx.dcloud.net.cn/ uni-app官网&#xff1a; uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/quickstart-hx.htmlHBuilder下载安装&#xff1a;打开官网 uni-app项目的微信开发者工具配置…

【python】Python高阶函数--map函数的详细语法分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

第二篇 Vue项目的搭建

1、脚手架安装 npm init vuelatest&#xff1a;官方提供的Vue项目脚手架工具&#xff0c;帮助我们搭建一个最简单的vue应用。 2、vs打开项目文件夹 打开脚手架生成的文件夹到vs并安装volar插件&#xff0c;以便vs能够支持vue格式代码 3、启动项目 npm run dev&#xff1a;vu…

Leetcode1929. 数组串联

问题描述&#xff1a; 给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans &#xff0c;数组下标 从 0 开始计数 &#xff0c;对于所有 0 < i < n 的 i &#xff0c;满足下述所有要求&#xff1a; ans[i] nums[i]ans[i n] nums[i] 具体而言…

目标检测算法与应用算法 DS集成 接口相关_v0.1

目录 文章目录 目录0. 目标GPS信息、速度、加速度、航向角信息的输出1. 目标检测算法接口1.1 模型相关1.2 检测结果相关 2. 应用算法接口2.1 bool cross_line; //跨线&#xff08;变道压线检测&#xff09;2.2 bool break_in; //闯入&#xff08;目标闯入&#xff09;2.3 bool …

GPT LangChain experimental agent - allow dangerous code

题意&#xff1a;GPT LangChain 实验性代理 - 允许危险代码 问题背景&#xff1a; Im creating a chatbot in VS Code where it will receive csv file through a prompt on Streamlit interface. However from the moment that file is loaded, it is showing a message with…

HTML+echarts.js实现的炫酷金色风格可视化组件

模板下载地址&#xff1a; 炫酷金色风格可视化组件 (bootstrapmb.com)https://www.bootstrapmb.com/item/14888 一款炫酷金色风格可视化组件&#xff0c;统计图表使用Echarts.js&#xff0c;整体风格采用金黄色看起来很大气&#xff0c;设计是通用型的&#xff0c;可以用作任…

格式工厂转换视频分辨率

1、下载和安装 http://www.pcfreetime.com/formatfactory/CN/index.html 2、打开视频 3、设置分辨率等参数 也可以选择保持原分辨率 4、执行导出 5、打开输出所在位置

【ARM】MDK-解决CMSIS_DAP.DLL missing报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录解决CMSIS_DAP.DLL missing的报错情况&#xff0c;对应相关报错信息&#xff0c;供后续客户参考&#xff0c;快速解决客户问题。 2、 问题场景 客户进行硬件调试时&#xff0c;发现Target设置内有CMSIS_DAP.DL…

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…

电流测量分流电阻

电流测量分流电阻 测量电流的设备称为安培计。大多数现代安培计测量已知电阻的精密电阻上的电压降。电流的计算使用欧姆定律&#xff1a;我五R 大多数电流表都内置电阻器来测量电流。但是&#xff0c;当电流对于电流表来说太高时&#xff0c;需要不同的设置。解决方案是将电流…

【C++】C++旅游管理系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

ARM架构(二)—— arm v7/v8/v9寄存器介绍

1、ARM v7寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPSR&…

前端JS特效第46集:js-实现响应式节庆活动砸金蛋效果

js-实现响应式节庆活动砸金蛋效果&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>响应式节庆活动砸金蛋…