C++ (一) 基础语法

基础语法:C++的开胃小菜

欢迎来到C++的世界,这里是编程的盛宴,也是逻辑的迷宫。别担心,我们不会一开始就让你啃硬骨头,而是从基础语法开始,让你慢慢品尝编程的美味。准备好了吗?让我们开始这场编程之旅!

1. 变量和数据类型:存储信息的盒子

在C++中,变量就像是存储信息的盒子。每个盒子都有标签,这个标签就是变量名,而盒子里装的东西就是数据。C++提供了多种类型的盒子,以适应不同类型的数据。

1.1 数据类型:选择合适的盒子

  • 整型(int):用来存储整数,比如年龄、分数等。
  • 浮点型(float和double):用来存储小数,比如价格、温度等。float占用的空间比double小,但精度也较低。
  • 字符型(char):用来存储单个字符,比如字母或符号。
  • 布尔型(bool):只有两个值,truefalse,用来表示真或假。

1.2 变量声明:给盒子贴标签

在C++中,你需要先声明变量,告诉编译器你打算存储什么类型的东西。比如:

int age; // 声明一个整型变量age
float price; // 声明一个浮点型变量price
char letter; // 声明一个字符型变量letter
bool isRaining; // 声明一个布尔型变量isRaining

1.3 变量初始化:往盒子里放东西

声明变量后,你可以立即给它赋值,这个过程叫做初始化。比如:

int age = 25; // 给age盒子里放一个整数25
float price = 19.99; // 给price盒子里放一个小数19.99
char letter = 'A'; // 给letter盒子里放一个字符'A'
bool isRaining = true; // 给isRaining盒子里放一个布尔值true

1.4 有趣的实例:猜数字游戏

让我们来写一个简单的猜数字游戏。程序会随机生成一个1到100之间的数字,然后让用户猜这个数字是多少。

#include <iostream>
#include <cstdlib> // 包含随机数生成函数
#include <ctime> // 包含时间函数

int main() {
    int secretNumber = rand() % 100 + 1; // 生成一个1到100的随机数
    int guess = 0;
    std::cout << "猜一个1到100之间的数字:";

    while (guess != secretNumber) {
        std::cin >> guess; // 用户输入猜测的数字
        if (guess < secretNumber) {
            std::cout << "太小了,再试试!" << std::endl;
        } else if (guess > secretNumber) {
            std::cout << "太大了,再试试!" << std::endl;
        }
    }

    std::cout << "恭喜你,猜对了!" << std::endl;
    return 0;
}

这个小游戏展示了如何使用整型变量和基本的控制结构。

2. 运算符和表达式:编程的数学课

在C++中,运算符是执行操作的符号,表达式则是由变量、常量和运算符组成的组合。

2.1 算术运算符:基本的数学运算

  • 加法(+):比如 3 + 4 结果是7。
  • 减法(-):比如 7 - 4 结果是3。
  • 乘法(*):比如 3 * 4 结果是12。
  • 除法(/):比如 12 / 4 结果是3。
  • 模运算(%):求余数,比如 7 % 3 结果是1。

2.2 赋值运算符:给盒子换东西

  • 简单赋值(=):将右边的值赋给左边的变量。
  • 复合赋值(+=,-=,*=,/=):将左边的变量和右边的值进行运算,并将结果赋给左边的变量。

2.3 比较运算符:判断真假

  • 等于(==):比较两个值是否相等。
  • 不等于(!=):比较两个值是否不相等。
  • 大于(>):比较左边的值是否大于右边的值。
  • 小于(<):比较左边的值是否小于右边的值。
  • 大于等于(>=):比较左边的值是否大于等于右边的值。
  • 小于等于(<=):比较左边的值是否小于等于右边的值。

2.4 逻辑运算符:逻辑判断

  • 逻辑与(&&):两个条件都为真时,结果为真。
  • 逻辑或(||):两个条件中至少一个为真时,结果为真。
  • 逻辑非(!):反转条件的真假。

2.5 有趣的实例:计算器程序

让我们来写一个简单的计算器程序,它可以进行加、减、乘、除四种运算。

#include <iostream>

int main() {
    int num1, num2;
    char operation;
    std::cout << "输入第一个数字:";
    std::cin >> num1;
    std::cout << "输入操作符(+,-,*,/):";
    std::cin >> operation;
    std::cout << "输入第二个数字:";
    std::cin >> num2;

    switch (operation) {
        case '+':
            std::cout << "结果是:" << num1 + num2 << std::endl;
            break;
        case '-':
            std::cout << "结果是:" << num1 - num2 << std::endl;
            break;
        case '*':
            std::cout << "结果是:" << num1 * num2 << std::endl;
            break;
        case '/':
            if (num2 != 0) {
                std::cout << "结果是:" << num1 / num2 << std::endl;
            } else {
                std::cout << "除数不能为0!" << std::endl;
            }
            break;
        default:
            std::cout << "无效的操作符!" << std::endl;
    }

    return 0;
}

这个程序展示了如何使用运算符和控制结构来实现一个简单的功能。

3. 控制结构:程序的决策者

控制结构决定了程序的执行流程,就像交通信号灯一样,指导程序何时停止、何时继续。

3.1 if语句:简单的决策

if语句用于在满足某个条件时执行一段代码。基本格式如下:

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

3.2 if-else语句:二选一的决策

if-else语句用于在满足某个条件时执行一段代码,如果不满足则执行另一段代码。基本格式如下:

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

3.3 switch语句:多选一的决策

switch语句用于在多个条件中选择一个执行。基本格式如下:

switch (表达式) {
    case1:
        // 如果表达式的值等于值1,执行这里的代码
        break;
    case2:
        // 如果表达式的值等于值2,执行这里的代码
        break;
    // ...
    default:
        // 如果表达式的值不匹配任何case,执行这里的代码
}

3.4 循环结构:重复执行的代码

循环结构用于重复执行一段代码,直到满足某个条件。

  • for循环:在已知循环次数的情况下使用。基本格式如下:
for (初始化表达式;条件表达式;更新表达式) {
    // 循环体
}
  • while循环:在循环次数未知,但有一个结束条件的情况下使用。基本格式如下:
while (条件表达式) {
    // 循环体
}
  • do-while循环:类似于while循环,但至少执行一次循环体。基本格式如下:
do {
    // 循环体
} while (条件表达式);

3.5 有趣的实例:FizzBuzz问题

FizzBuzz是一个经典的编程问题,要求从1打印到100,但遇到3的倍数打印"Fizz",5的倍数打印"Buzz",既是3的倍数又是5的倍数的打印"FizzBuzz"。

#include <iostream>

int main() {
    for (int i = 1; i <= 100; i++) {
        if (i % 3 == 0 && i % 5 == 0) {
            std::cout << "FizzBuzz ";
        } else if (i % 3 == 0) {
            std::cout << "Fizz ";
        } else if (i % 5 == 0) {
            std::cout << "Buzz ";
        } else {
            std::cout << i << " ";
        }
    }
    std::cout << std::endl;
    return 0;
}

这个程序展示了如何使用循环和条件判断来解决一个有趣的问题。

4. 数组和字符串:存储多个数据

数组和字符串是存储多个数据的容器。数组可以存储相同类型的多个数据,而字符串是字符数组的特例。

4.1 数组:存储多个相同类型的数据

数组的声明格式如下:

类型 数组名[大小];

比如,声明一个整型数组:

int numbers[5]; // 声明一个可以存储5个整数的数组

你可以使用索引来访问和修改数组中的元素,索引从0开始:

numbers[0] = 10; // 将第一个元素设置为10
numbers[1] = 20; // 将第二个元素设置为20
// ...

4.2 字符串:字符的数组

在C++中,字符串通常使用std::string类来表示。你可以使用std::string的成员函数来操作字符串。

#include <string>

int main() {
    std::string name = "Kimi"; // 声明一个字符串变量并初始化
    std::cout << "Hello, " << name << "!" << std::endl; // 输出Hello, Kimi!
    return 0;
}

4.3 有趣的实例:找出数组中的最大值

让我们来写一个程序,找出一个整数数组中的最大值。

#include <iostream>

int main() {
    int numbers[] = {3, 5, 1, 8, 2, 9, 4};
    int max = numbers[0]; // 假设第一个元素是最大的

    for (int i = 1; i < sizeof(numbers) / sizeof(numbers[0]); i++) {
        if (numbers[i] > max) {
            max = numbers[i]; // 发现更大的值,更新max
        }
    }

    std::cout << "数组中的最大值是:" << max << std::endl;
    return 0;
}

这个程序展示了如何使用数组和循环来解决一个实际问题。

结语

嘿,看来我们已经把C++的基础语法翻来覆去地玩弄了一番。现在,你的编程基础应该比那些只会在键盘上敲“Hello, World!”的新手们要牢固得多了。但是,别忘了,真正的编程之旅才刚刚开始,就像是你刚刚学会了如何用勺子吃饭,接下来还有无数的美味佳肴等着你去品尝。

记住,编程就像是在和电脑玩一场永无止境的捉迷藏。有时候,你会发现自己藏得太好了,连自己都找不到那些bug。但别担心,每个程序员都是从这样的尴尬时刻中成长起来的。你的代码可能会被吐槽,你的逻辑可能会被质疑,但只要你坚持不懈,总有一天,你会写出让机器都羡慕的代码。

所以,拿起你的键盘,继续敲打吧!让那些字符在你的指尖下跳舞,让那些代码在你的屏幕上歌唱。编程是一场创意的狂欢,而你,就是这场狂欢的DJ。不要害怕犯错,不要害怕失败,因为每一次的失败,都是你通往成功的垫脚石。

最后,别忘了,编程不只是冷冰冰的代码,它也可以是温暖人心的艺术。用你的代码去解决问题,去创造价值,去触动人心。让世界看看,一个程序员的力量有多么强大。

好了,我得走了,我的咖啡凉了。继续你的编程之旅吧,未来的代码大师,愿代码与你同在!💻💡🚀

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯注意事项

蓝桥杯注意事项 比赛注意事项 能暴力枚举就暴力枚举&#xff0c;能用简单的思路做就尽量用简单的思路做。认真审核题目的题意和输入输出的要求&#xff0c;避免因为误解题意而导致题目错误。对于提供多组测试样例或者需要对一个过程重复进行循环的代码&#xff0c;要时刻记住…

第四范式发布AI Data Foundry,加速大模型训练及应用

产品上新 Product Release 今日&#xff0c;第四范式发布AI Data Foundry&#xff0c;提供基于AI技术&#xff0c;融合人类专家反馈的高质量、丰富可扩展、多样化的数据集&#xff0c;大幅提升模型效果。同时&#xff0c;通过模型评估系统及工具&#xff0c;对模型效果进行有效…

w外链如何跳转微信小程序

要创建外链跳转微信小程序&#xff0c;主要有以下几种方法&#xff1a; 使用第三方工具生成跳转链接&#xff1a; 注册并登录第三方外链平台&#xff1a;例如 “W外链” 等工具。前往该平台的官方网站&#xff0c;使用手机号、邮箱等方式进行注册并登录账号。选择创建小程序外…

windows SVN 忘记账号密码

一、本地登录过且记录未清空 1、打开C:\Users\用户名\AppData\Roaming\Subversion\auth\svn.simple目录 2、下载SvnPwd.exe文件 链接地址&#xff1a;TortoiseSVN Password Decrypter 复制SvnPwd.exe到 C:\Users\用户名\AppData\Roaming\Subversion\auth\svn.simple目录下 3、运…

Web组态-仪器间的相互通信(WebSocket技术)

Web组态&#xff0c;通过Vue3TypeScriptWebSocket技术实现平台仪器间的相互通信&#xff0c;用于设计工业化虚拟仿真。 界面图如下&#xff08;之前文章有详细教学&#xff09; 如下是通信设备虚拟仿真的三个仪器&#xff0c;设计初衷是想三个仪器能够数据互通&#xff0c;实现…

【Thymeleaf】spring boot模板引擎thymeleaf用法详解

快速入门Thymeleaf 1️⃣ 什么是Thymeleaf&#xff1f;1️⃣ 模板入门2️⃣ 创建测试工程2️⃣ 配置文件2️⃣ 创建controller2️⃣ 写一个html页面2️⃣ 启动测试 1️⃣ Thymeleaf基础2️⃣ 实体类2️⃣ 增加接口2️⃣ $符号使用2️⃣ *符号的使用2️⃣ 符号的使用2️⃣ #符号…

一文掌握异步web框架FastAPI(五)-- 中间件(测试环境、访问速率限制、请求体解析、自定义认证、重试机制、请求频率统计、路径重写)

接上篇:一文掌握异步web框架FastAPI(四)-CSDN博客 目录 七、中间件 15、测试环境中间件 16、访问速率限制中间件,即限制每个IP特定时间内的请求数(基于内存,生产上要使用数据库) 1)限制单ip访问速率 2)增加限制单ip并发(跟上面的一样,也是限制每个IP特定时间内的请…

??? 命令行形式的简单功能的计算器的Shell脚本

文章目录 需求编码Way1Way2&#xff1a; 测试 需求 需求分析&#xff1a; 支持浮点型&#xff1a;使用let命令 编码 Way1 用下循环吧&#xff01; #!/bin/bash # Author: # Date: # Description:# functions defines: input_check_to_startup() {num1$1num2$2isNum_statu…

Node版本管理nvm

公司项目比较多&#xff0c;且有历史包袱&#xff0c;没时间升级&#xff0c;高版本的node无法在低版本项目中打包编译&#xff1b; 下载地址 gitHub地址 nvm-setup.zip&#xff1a;安装版&#xff0c;推荐使用 nvm-setup.exe 常用指令 // 查看版本信息 nvm -v // 查看能安装…

《线下学习受局限,知识付费小程序开启新篇》

在知识大爆炸的时代&#xff0c;人们对知识的渴望从未如此强烈。然而&#xff0c;传统的线下学习方式却逐渐显露出诸多局限。 线下学习往往受到时间和空间的严格限制。为了参加一场培训课程或者讲座&#xff0c;你可能需要在特定的时间赶到特定的地点&#xff0c;这对于忙碌的…

大数据-188 Elasticsearch - ELK 家族 Logstash Output 插件

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

基于开源Jetlinks物联网平台协议包-MQTT自定义主题数据的编解码

目录 前言 1.下载官方协议包 2.解压 3.自定义主题 4.重写解码方法 5.以下是我解析后接收到的数据 前言 最近这段时间&#xff0c;一直在用开源的Jetlinks物联网平台在学习&#xff0c;偶尔有一次机会接触到物联网设备对接&#xff0c;在协议对接的时候&#xff0c;遇到了…

400行程序写一个实时操作系统(十):用面向对象思想构建抢占式内核

前言 通过前几章的学习&#xff0c;我们学会了如何为RTOS设计一个合理的内存管理算法。现在&#xff0c;是时候学习设计RTOS内核了。 关于RTOS内核的文章也有很多&#xff0c;但都有一点先射箭再化靶子的意味。要么是代码连篇解释却寥寥无几&#xff0c;要么是要先怎么样再怎么…

【星闪开发连载】WS63E模块连接华为IoT云

目录 引言 WS63E对MQTT的支持 程序修改 测试结果 结语 引言 在上一篇博文中已经介绍了WiFi的使用。今天介绍一下如何使用MQTT协议连接到华为云上。 WS63E对MQTT的支持 WS63E的代码参考直接提供了MQTT的支持&#xff0c;文档介绍见docs/board/WS63V100 MQTT 开发指南.pd…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】 一、前文回顾二、CMSIS-NN简介2.1 为什么介绍CMSIS-NN&#xff1f;2.2 CMSIS-NN是什么&#xff1f;2.3 CMSIS-NN核心特性2.4 CMSIS-NN算子支持 三、TFLMCMSIS-NN集成3.1 包含TFLM的STM32项目3.2 理解TFLM…

如何在Windows平台下基于Whisper来训练自己的数据

0. 简介 最近快到1024程序员节了&#xff0c;再给大家上点干活。Whisper是openai开源的一个语音转文字模型。也是现在识别效果最好的离线数据模型&#xff0c;但是我们发现我们在完成一些中英文或者专业术语对话的时候。这时候表现的效果就比较差了。而这一步就得用微调的方式…

EM算法(期望最大算法、Expectation Maximization Algorithm)

EM算法&#xff08;期望最大算法、Expectation Maximization Algorithm) 引言 EM算法&#xff0c;全称为期望最大&#xff08;Expectation Maximization&#xff09;算法&#xff0c;是一种从不完全数据或有数据丢失的数据集&#xff08;存在隐含变量&#xff09;中求解概率模…

Oracle单实例静默安装

oracle 11g单实例静默安装 在CentOS上静默安装Oracle数据库 引言 在企业环境中&#xff0c;自动化和标准化是提高效率的关键。静默安装&#xff08;也称为无人值守安装&#xff09;是一种无需人工干预的安装方法&#xff0c;适用于大规模部署或需要重复安装的场景。本文将介…

【redis】初识非关系型数据库——redis

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 初识 Redis Redis是⼀种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由string&#xff08;字符串&#xff09;、hash&#xff0…

【Python爬虫实战】多进程结合 BeautifulSoup 与 Scrapy 构建爬虫项目

#1024程序员节&#xff5c;征文# &#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 前言 在大数据时代&#xff0c;爬虫技术是获取和处理网络数据的利器。面对需要处理大…