C++入门基础06:简单语句与顺序结构、选择结构if与switch、循环语句、跳转语句、异常处理

news2024/11/28 20:48:09

C++入门基础06:简单语句与顺序结构、选择结构if与switch、循环语句、跳转语句、异常处理

1、简单语句与顺序结构:

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int main()
{
    //1、表达式加上分号就是语句
    //a + 5 
    int a = 10;
    a = a + 5;

    //2、空语句
    //while (a > 5); a--; //空语句多余的也不一定是没有害处的
    
    //3、复合语句——语句块
    //{ }
    {
        int b = 6;
        b = b + 1;
    }

    //4、顺序语句
    a = a + 5;
    a = a * 5;
    //....顺序执行

    //5、语句作用域
    //b是定义在语句块中的,作用域就是该语句块内,外部是没有定义的。
    //因此下面的b输出会报错,显示为未定义标识符"b"
    //cout << b << endl;
    for (int i = 0; i < 10; i++) {
        cout << "i:" << i << endl;
    }
    //cout << i << endl; //这里i的作用域仅限于for循环。


    return 0;
}

在这里插入图片描述

2、选择结构if与switch

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int main()
{
    //程序流程结构
    //顺序结构、条件结构(选择结果)、循环结构

    //选择结构:if——else switch——case
    //一、 if——else
    //if语句
    int a = 1;
    if (a>6) //bool:true false
    {
        //不执行
        cout << "a 大于 6 !" << endl;
        a = a + 5;
    }

    //if..else
    if (a > 6) //bool:true false
    {
        //不执行
        cout << "a的值大于6!" << endl;
    }
    else {
        cout << "a的值小于6:" << endl;
    }

    //嵌套if语句
    if (a > 6) {
        cout << "a 的值大于6" << endl;
    }
    else if (a > 0) {
        cout << "a 的值大于0小于6" << endl;
    }
    else {
        cout << "a 的值小于0" << endl;
    }

    //嵌套的if判断
    if (a > 0) 
    {
        if (a > 6)
        {
            cout << "a大于6" << endl;
        }
        else
        {
            cout << "a小于6" << endl;
        }
    }

    //二、switch——case
    /*
    switch(表达式) //表达式内容只能是字符型或者整型
    {
        case结果1: 执行语句1; break;
        case结果2: 执行语句2; break;
        ...
        case结果n: 执行语句n; break;
        default: 执行语句: break;
    }
    */
    cout << "\n" << endl;
    string str = "i like study cplusplus!";
    int num = 0;
    for (char c : str)
    {
        switch (c) //表达式内容只能是字符或则整型
        {
            case 'a': num++; break; //break关键字很重要,不可以遗漏
            case 'e': num++; break;
            case 'i' : num++; break;
            case 'o': num++; break;
            case 'u': num++; break;
            default: cout << "不是元音字母:" <<c<< endl; break;
        }
    }
    cout << "元音字母个数为:" << num << endl;

    return 0;
}

在这里插入图片描述

3、循环语句

循环的实现可以使用 for、while 和 do…while 三种形式:

for(初始值;循环结束条件;循环量变更)
{
 //代码块
}

范围 for 循环:

for(元素:集合)
{
 //代码块
}

范围 for 循环是从集合中取其中的元素,进行循环操作。

while(循环结束条件)
{
 // 语句块
}
do
{
 // 语句块
}
while(循环结束条件)

注意:do…while 会先执行一次语句块的功能,然后再判断循环条件是否满足。
循环结构要非常注意循环变更是否能满足循环结束条件,不满足则出现死循环。

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int main()
{
    //1、for 循环
    for (int i = 0; i < 10; i++) {
        cout << "i:" << i << endl;
    }

    //2、范围for循环(C++11)
    cout << '\n' << endl;
    string str = "cplusplus";
    for (char c : str)  //从str中一个个取字符
    {
        cout << c << " " ;
    }
    cout << endl;

    //3、while循环
    cout << '\n' << endl;
    int i = 10;
    while (i > 0)
    {
        cout<<"i的值:"<< i << endl;
        i--; //循环变更方法,去掉了就成了死循环。
    }

    //4、do...while
    cout << '\n' << endl;
    //先执行一次do,后到while判断
    int j = 10;
    do {
        j--;
        cout << "j的值:" << j << endl;
    } while (j > 0);

    return 0;
}

在这里插入图片描述

4、跳转语句

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
using namespace std;

int main()
{
    //1、break
    // 乘法表
    // 终止最近的循环,彻底的终止。
    //用于switch 和 循环 ( for while do..while)
    for (int i = 1; i < 10; i++) 
    {
        for (int j = 1; j <10; j++)
        {
            if(j>i)
                {
                    cout << endl;
                    break;
                }
            cout << i << "*" << j << " = " << i * j << " ";
        }
    }


    //2、continue
    // 去除元音字母
    //终止当前迭代的最近循环
    cout<<'\n' << endl;
    string str = "i love study cplusplus very much!";
    for (char c : str)
    {
        if (c == 'a' || c =='e' || c =='i' || c == 'o' || c =='u')
        {
            continue;
            //本次循环结束,不在往下进行了,将
        }
        cout << c;

    }
    cout << endl;

    //3、return
    //返回值
    //函数里面使用,在函数章节会做讲解

    //4、goto
    //无条件跳转,但是不建议大家使用
    int a = 0;
label:
    int c = 9;
    a = a + 1;
    goto label; //没有任何条件与意义的进行跳转,不建议使用
    int b = 9;
    b = b + 1;

    return 0;
}

在这里插入图片描述

5、异常处理

异常是程序在执行期间产生的问题或者特殊错误,如除以零的操作。

C++提供了异常处理机制,异常处理涉及到三个关键字:try、catch、throw。
try: try 块中是尝试执行的代码,该代码有可能有异常抛出,它后面通常跟着一个或多个 catch 块。
catch: 用于处理程序捕获异常。
throw: 当代码执行出现问题时,可以使用 throw 关键字抛出一个异常。

try
{
 // 可能有异常抛出的代码
}catch( ExceptionName e1 )
{
 // catch 块
}catch( ExceptionName e2 )
{
 // catch 块
}

C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。
也可以通过继承和重载 exception 类来自己定义异常。
在这里插入图片描述
尽量使用标准库的异常

#include <iostream>
//系统定义头文件一般是尖括号
#include<fstream>
#include<string>
#include<exception> //标准库的头文件,标准库的异常
using namespace std;

//异常处理

//自定义了一个MyException异常
struct MyException : public exception //继承exception这个类,也就是标准库的异常。
{   
    //重写了一下what()函数,在exception中有定义了一个what()函数,重写了一下what()函数的返回信息:
    const char* what() const throw()
    {
        return "C++ Exception";
    }
};

int main()
{
    int price;
    try
    {
        cout << "请输入价格:" << endl;
        cin >> price;
        if (price <= 0) 
        {
            //抛出异常
            throw runtime_error("price cannot be negative!");
        }
    }
    //catch只捕获运行时异常,运行时异常变量名名称叫e
    catch (runtime_error e) 
    {
        //输出一下运行时错误的信息。
        cout<<"运行时错误的信息:"<< endl;
        cout << e.what() << endl;
    }


    cout << "\n" << endl;
    try
    {
        throw MyException();
    }
    catch (MyException e) 
    {
        cout << "catch some exception! " << endl;
        cout << e.what() << endl;
    }


    cout << "\n" << endl;
    try
    {
        throw MyException();
    }
    //括号中是三个点表示捕获所有异常。
    //如果不适用...,那么有可能异常没有捕获到,程序就有可能崩溃,所以为了能够让程序正常运行,使用...去捕获所有异常。
    catch (...)
    {
        cout << "catch all exception! " << endl;
    }


    return 0;
}

在这里插入图片描述

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

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

相关文章

资本-劳动力错配指数计算、金融错配指标两大维度指标(内附代码)

一、资本错配和劳动力错配指数计算 1、数据来源&#xff1a;各省级统计年鉴/中国统计年鉴、 2、时间跨度&#xff1a;2000-2019年 3、区域范围&#xff1a;31省市自治区 4、指标说明&#xff1a; 资源的稀缺性决定了经济学研究的一个基本问题就是资源配置&#xff0c;如…

找出你的高价值潜在用户 - 通过归因分析实现用户画像和精准营销

在之前的博客文章 为什么你的用户转化率不高&#xff1f;--新媒体运营转化效果渠道归因分析中&#xff0c;我们讲到 新媒体运营用户转化相关的指标以及目标追踪&#xff0c;以及相关的渠道归因分析。在本篇文章中&#xff0c;我们一起来看看&#xff0c;如何通过 Kyligence Zen…

数据结构:二叉树

目录 树 二叉树 堆 以大堆为例代码实现 功能预览 初始化 销毁 打印 插入数据 删除数据 建堆 获取栈顶元素 获取数组中的元素个数 判空 堆排序 TopK问题 二叉树链式结构的实现 功能预览 二叉树遍历 求节点的总个数 求叶子节点的个数 求树的深度 求第k层的…

零入门容器云网络-5:同一宿主机上的两个网络命名空间通信方案

已发表的技术专栏&#xff08;订阅即可观看所有专栏&#xff09; 0  grpc-go、protobuf、multus-cni 技术专栏 总入口 1  grpc-go 源码剖析与实战  文章目录 2  Protobuf介绍与实战 图文专栏  文章目录 3  multus-cni   文章目录(k8s多网络实现方案) 4  gr…

Android 虚拟分区详解(一) 参考资料推荐

文章目录0. 导读1. Android 官方 VAB 文档1.1 公开文档1.2 半公开文档2. Device Mapper 文档2.1 device mapper 文档2.2 dmsetup 工具2.3 COW 介绍3. Android 源码4. 参考资料汇总5. 后续计划6. 其它Android Virtual A/B 系统简称 VAB&#xff0c;我在这一系列里面又将其称为虚…

【LeetCode每日一题:813. 最大平均值和的分组~~~前缀和+递归+记忆化搜索】

题目描述 给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。 注意我们必须使用 nums 数组中的每一个数进行分组&#xff0c;并且分数不一定需要是整数。 返回我们所能得到的最大 分数 是多少…

前端面试整理

Js 1. Localstorage、sessionStorage、cookie、session的区别 &#xff08;1&#xff09;web storage和cookie的区别&#xff1a; Cookie(不设置过期时间) sessionStorage WebStorage的目的是克服由cookie所带来的一些限制&#xff0c;当数据需要被严格控制在客户端时&…

C/C++ 深入浅出C++模板(上)

不知道你是否思考过一个问题&#xff0c;那就是为什么C有丰富的库&#xff0c;而C语言却没有&#xff1f;比如说C有STL库&#xff0c;线程库等。其实一个很重要的因素就是因为C引入了泛型编程这个概念&#xff0c;也就是我们熟悉的模板。今天我们就一起来深入理解什么是泛型编程…

如何将文字转语音?这几个软件可以将文字转语音

最近有朋友向我求助说&#xff0c;自己在学校的社团里准备了一个话剧节目&#xff0c;需要为这个节目进行旁白配音&#xff0c;但是里面的台词不仅绕口&#xff0c;还有一些是生僻字&#xff0c;念起来有点困难。要是碰上自己的课程比较多的时候&#xff0c;难以兼顾两边的工作…

使用Apache搭建网站

❤️痛苦不是失败&#xff0c;而是你本可以❤️ 实验环境 CentOS7.3&#xff08;1611&#xff09;版本、Apache2.4&#xff0c;vsftpd3.0 本次实验目的 1.编译安装httpd 2.优化路径 3.并将鲜花网站上传到web服务器为网页目录&#xff08;当然其他网站源码也可以&#xff09;…

CMU 15-213 CSAPP. Ch11. Dynamic Memory Allocation

CMU 15-213 CSAPP (Ch1~Ch3) CMU 15-213 CSAPP (Ch5~Ch7) CMU 15-213 CSAPP (Ch8) CMU 15-213 CSAPP (Ch9) CMU 15-213 CSAPP (Ch10) CMU 15-213 CSAPP (Ch11) 视频链接 课件链接 课程补充 该课程使用 64位 编译器&#xff01; Ch11. Dynamic Memory Allocation 11.1 Basic c…

【附源码】计算机毕业设计JAVA政府人才机构在线考试系统2021

【附源码】计算机毕业设计JAVA政府人才机构在线考试系统2021 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1…

《web课程设计》基于HTML+CSS+JavaScript典的中医药大学网(11个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于Python监测键盘输入并发出声音的坤音键盘

代码和软件在公众号【走神研究所】发送【键盘】关键字获取。这是一款基于python的桌面小工具&#xff0c;能够实时显示你敲击键盘的按键&#xff0c;并且当摁下“J”、“N”、“T”、“M”时会发出坤音。具体视频演示和代码原理在这里打开程序&#xff0c;随意摁下键盘&#xf…

2022/11/27一周总结

项目 redis 安装以及启动 切换到redis根目录运行cmd&#xff0c;先启动服务端redis-server.exe 2.输入redis-cli并回车&#xff08;redis-cli是客户端程序&#xff09;如图正常提示进入&#xff0c;并显示正确端口号&#xff0c;则表示服务已经启动。 基本知识 数据类型 St…

算法提升:图的Dijkstra(迪杰斯特拉)算法

目录 概念 思路 代码 概念 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的&#xff0c;因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法&#xff0c;解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始&#xf…

【Hack The Box】linux练习-- Ophiuchi

HTB 学习笔记 【Hack The Box】linux练习-- Ophiuchi &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1…

MySQL的执行计划explain

select_type&#xff1a;表示的查询类型 SIMPLE&#xff1a;表示查询语句不包含子查询和union;PRIMARY&#xff1a;表示此查询是最外层的查询&#xff1b;UNION: 表示此查询是UNION的第二个或后续的查询&#xff1b;DEPENDENT UNION&#xff1a;表示此查询是UNION的第二个或后续…

ARM Developer Keil MDK 5.X Crack

ARM Developer Keil MDK是面向各种STM32微控制器产品的全面软件开发解决方案&#xff0c;提供创建、编译和调试嵌入式应用程序时所需的一切资源。MDK包括真正的Arm编译器和易于使用的Keil uVision IDE/调试器&#xff0c;可与STM32CubeMX和软件包连接。MDK还提供各种专业的中间…

Faster R-CNN详解

Faster R-CNN Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。使用VGG16作为网络的backbone&#xff0c;推理速度在GPU上达到5fps(包括候选区域的生成)&#xff0c;准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。 Faster R-CNN算…