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。不要害怕犯错,不要害怕失败,因为每一次的失败,都是你通往成功的垫脚石。

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

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

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

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

相关文章

揭秘 Mark Word 的存储结构

一个Java对象被初始化之后会存储在堆内存中&#xff0c;那么这个对象在堆内存中存储了哪些信 呢? Java 对象存储结构可以分为三个部分:对象头、实例数据、对齐填充。当我们构建一个0b lock new Object() 对象实例时&#xff0c;这个1ock实例最终的存储结构就对应下面…

如何高效集成聚水潭数据至MySQL-技术案例解析

如何高效集成聚水潭数据至MySQL-技术案例解析 聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中&#xff0c;我们将探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的店铺信息高效地集成到MySQL数据库中。具体方案为“聚水潭-店铺信息查询-->BI崛起-店铺信息表”…

SSL证书有免费的吗?在哪里可以申请到?——附带申请步骤

申请免费的SSL证书通常可以通过以下几个步骤完成&#xff0c;这里以使用JoySSL为例进行说明&#xff0c;因为JoySSL提供了一个免费、自动化和开放的证书颁发机构&#xff08;CA&#xff09;来促进网站从HTTP向HTTPS的转换。 步骤&#xff1a; 选择工具&#xff1a; 访问JoySSL…

【Nuvoton干货分享】开发应用篇 5 -- 32bit MCU Flash 操作

在实际开发中&#xff0c;我们都会碰到需要把部分数据存放在不易失存储空间上&#xff0c;比如外部NOR FLASH、EEPROM、SD等存储空间上&#xff0c;针对数据量不大的情况下&#xff0c;可以考虑将数据存放在芯片ROM存储空间。Nuvoton 32bit MCU ROM存储空间包括LDROM、APROM、S…

ImportError: DLL load failed while importing _ext: 找不到指定的程序。

下载mmcv&#xff0c;torch时报错&#xff1a; ImportError: DLL load failed while importing _ext: 找不到指定的程序。 报错原因&#xff1a; mmcv&#xff0c;torch&#xff0c;python的版本冲突问题&#xff08;版本对应不上&#xff09;。 最新版本&#xff0c;请参考…

不同类型数据资产的价值差异知多少

在数字化时代&#xff0c;数据成为关键资产。数据资产类型多样&#xff0c;包括结构化、半结构化和非结构化数据&#xff0c;它们的价值差异显著。 结构化数据存储在关系型数据库中&#xff0c;如企业财务报表、销售数据和客户信息等。其价值特点在于准确性和一致性高&#xff…

C++ queue适配器(配接器)

queue queue是CSTL库中的一个适配器&#xff0c;一般使用deque作为数据存储容器。在数据结构中&#xff0c;它是采用队列的设计思路&#xff1b;在算法领域中&#xff0c;适用于解决宽度优先搜索BFS、图论等问题。下面我们就来认识一下queue适配器。 文章目录 queue1. queue的…

C++ 二叉树进阶:二叉搜索树

目录 二叉搜索树的概念 二叉搜索树的实现 基本结构 插入 1&#xff0c;当树是空树的时候 2&#xff0c;当树不为空的时候 3&#xff0c;纠正后的代码 查找 删除 1&#xff0c;左为空或右为空 2&#xff0c;左右都不为空 3&#xff0c;删除的完整代码&#xff1a; 二…

visual studio设置修改文件字符集方法

该方法来自网文&#xff0c;特此记录备忘。 添加两个组件&#xff0c;分别是Force UTF-8,FileEncoding。 截图如下&#xff1a; 方法如下&#xff1a;vs中点击“扩展”->“管理扩展”&#xff0c;输入utf搜索&#xff0c;安装如下两个插件&#xff0c;然后重启vs&#xf…

MongoDB 安装教程(MAC版本)

1.官网地址 https://www.mongodb.com/ 下载社区版&#xff0c;并且解压即可 2.安装位置 没有固定位置&#xff0c;将解压后的文件拷贝到任意位置&#xff0c;这里将以 /usr/locall为例。 3.配置环境变量 ## 1.打开环境配置文件 open .bash_profile ## 2.添加环境配置&#…

input子系统的框架和重要数据结构详解

#1024程序员节 | 征文# 往期内容 I2C子系统专栏&#xff1a; 专栏地址&#xff1a;IIC子系统_憧憬一下的博客-CSDN博客具体芯片的IIC控制器驱动程序分析&#xff1a;i2c-imx.c-CSDN博客 – 末篇&#xff0c;有往期内容观看顺序 总线和设备树专栏&#xff1a; 专栏地址&#…

【人工智能】掌握深度学习中的时间序列预测:深入解析RNN与LSTM的工作原理与应用

深度学习中的循环神经网络&#xff08;RNN&#xff09;和长短时记忆网络&#xff08;LSTM&#xff09;在处理时间序列数据方面具有重要作用。它们能够通过记忆前序信息&#xff0c;捕捉序列数据中的长期依赖性&#xff0c;广泛应用于金融市场预测、自然语言处理、语音识别等领域…

RSocket vs WebSocket:Spring Boot 3.3 中的两大实时通信利器

RSocket vs WebSocket&#xff1a;Spring Boot 3.3 中的两大实时通信利器 随着现代互联网应用的不断发展&#xff0c;实时通信已经成为许多应用程序不可或缺的功能。无论是社交网络、在线游戏还是数据监控系统&#xff0c;实时通信都能提供快速、无缝的信息交换。而实现实时通…

高精度KEITHLEY2636A参数资料吉时利2636B数字源表

Keithley 2636A吉时利2636B数字源表&#xff0c;200V&#xff0c;1fA/1uV&#xff0c;2 通道&#xff0c;10A 脉冲 Keithley 2636A SourceMeter 是 Keithley 最新 IV 源测量仪器的一部分&#xff0c;可用作台式 IV 表征工具或多通道 IV 测试系统的构建块组件。对于台式使用&am…

STM32通信协议-I2C

目录 一&#xff0c;IC2的协议规则 I2C总线是PHILIPS公司开发的两线式串行总线&#xff0c;I2C总线主要解决了单片机一对多通信的问题 两根通信线&#xff1a;SCL,SDA&#xff0c;同步&#xff0c;半双工通信&#xff0c;支持数据应答机制&#xff0c;支持总线挂载多设备。 …

Python异常检测- 单类支持向量机(One-Class SVM)

系列文章目录 Python异常检测- Isolation Forest&#xff08;孤立森林&#xff09; python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子&#xff08;LOF&#xff09;算法 Python异常检测- DBSCAN 文章目录 系列文章目录前言一、On…

图像高清化(论文复现)

图像高清化(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 图像高清化(论文复现)概述算法原理核心逻辑效果演示使用方式概述 本文复现论文 “Zero-Shot” Super-Resolution using Deep Internal Learning[1] 提出的图像超分辨率方法。 图像超分辨率是指从低…

如何从模块内部运行 Pytest

在 Python 中&#xff0c;pytest 是一个强大的测试框架&#xff0c;用于编写和运行测试用例。通常我们会在命令行中运行 pytest&#xff0c;但是有时你可能希望从模块或脚本的内部运行 pytest&#xff0c;比如为了自动化测试或集成到某个工作流程中。 1、问题背景 当你从模块…

Netty无锁化设计之对象池实现

池化技术是比较常见的一种技术&#xff0c;在平时我们已经就接触很多了&#xff0c;比如线程池&#xff0c;数据库连接池等等。当我们要使用一个资源的时候从池中去获取&#xff0c;用完就放回池中以便其他线程可以使用&#xff0c;这样的目的就是为了减少资源开销&#xff0c;…

JMeter 动态参数赋值实践

目录 前言 单线程 用户参数 场景说明 实战结果 配置明细 单线程 CSV Data Set Config 场景说明 实践结果 配置明细 多线程循环单次执行 场景说明 实践结果 配置明细 单线程 控制器 用户自定义变量 用户参数 场景说明 实战结果 配置明细 多并发 多接口 …