C++ (一) 基础语法
基础语法:C++的开胃小菜
欢迎来到C++的世界,这里是编程的盛宴,也是逻辑的迷宫。别担心,我们不会一开始就让你啃硬骨头,而是从基础语法开始,让你慢慢品尝编程的美味。准备好了吗?让我们开始这场编程之旅!
1. 变量和数据类型:存储信息的盒子
在C++中,变量就像是存储信息的盒子。每个盒子都有标签,这个标签就是变量名,而盒子里装的东西就是数据。C++提供了多种类型的盒子,以适应不同类型的数据。
1.1 数据类型:选择合适的盒子
- 整型(int):用来存储整数,比如年龄、分数等。
- 浮点型(float和double):用来存储小数,比如价格、温度等。
float
占用的空间比double
小,但精度也较低。 - 字符型(char):用来存储单个字符,比如字母或符号。
- 布尔型(bool):只有两个值,
true
和false
,用来表示真或假。
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 (表达式) {case 值1:// 如果表达式的值等于值1,执行这里的代码break;case 值2:// 如果表达式的值等于值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。不要害怕犯错,不要害怕失败,因为每一次的失败,都是你通往成功的垫脚石。
最后,别忘了,编程不只是冷冰冰的代码,它也可以是温暖人心的艺术。用你的代码去解决问题,去创造价值,去触动人心。让世界看看,一个程序员的力量有多么强大。
好了,我得走了,我的咖啡凉了。继续你的编程之旅吧,未来的代码大师,愿代码与你同在!💻💡🚀
相关文章:
C++ (一) 基础语法
基础语法:C的开胃小菜 欢迎来到C的世界,这里是编程的盛宴,也是逻辑的迷宫。别担心,我们不会一开始就让你啃硬骨头,而是从基础语法开始,让你慢慢品尝编程的美味。准备好了吗?让我们开始这场编程…...

Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
一、前言说明 在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作。经过搜索发现很多人都有这个…...
C 语言介绍及操作案例
C 语言是一种广泛使用的通用编程语言,具有高效、灵活和可移植性强等特点。 一、C 语言的基本特点 简洁高效 C 语言语法简洁,表达能力强。它提供了丰富的数据类型和运算符,可以方便地进行各种计算和操作。C 语言的代码执行效率高,能够直接访问硬件资源,适用于对性能要求较…...
Ivanti云服务被攻击事件深度解析:安全策略构建与未来反思
攻击事件背景 近期,威胁情报和研究机构Fortinet FortiGuard Labs发布了一份关于针对IT解决方案提供商Ivanti云服务设备(Ivanti Cloud Services Appliance,CSA)的复杂网络攻击的详细分析。 该攻击被怀疑是由国家级对手发起…...
如何做出正确选择编程语言:关于Delphi 与 C# 编程语言的优缺点对比
概述 为您的项目选择正确的技术可能是一项相当棘手的任务,尤其是当您以前从未需要做出这样的选择时。如今可用的选项范围非常广泛。虽然一些编程语言和工具有着相当悠久的历史,但其他一些则是刚刚开始赢得开发人员青睐的新手。 在这篇博文中࿰…...

39.3K Star,一个现代的数据库ORM工具,专为Node.js和TypeScript设计
大家好,今天给大家分享一个现代的数据库对象关系映射(Object-Relational Mapping,ORM)工具Prisma ORM,它旨在简化数据库操作,提高开发效率,并确保类型安全。 项目介绍 Prisma ORM适用于各种需要…...
Nginx和Mysql的基础命令
1.安装nginx brew install nginx 2.启动nginx brew services start nginx 3.查看nginx文件默认路径 brew info nginx 重装要先关闭nginx 4.nginx.conf 地址 nginx -t 5.nginx重启 brew services restart nginx 6.关闭nginx brew services stop nginx 7.卸载nginx brew uninstal…...
Docker之容器常见操作
docker 命令介绍 docker --help 管理命令: container 管理容器image 管理镜像network 管理网络命令: attach 介入到一个正在运行的容器build 根据 Dockerfile 构建一个镜像commit 根据容器的更改创建一个新的镜像cp 在本地文…...

猜数游戏(Fortran)
背景 学了两个月Fortran还没来一次正式练习 于是—— 代码 program gessnum! implicit none 不取消IN规则。integer::num,areal::Ncall random_seed()call random_number(N)aint(N*10)print*,"请输入您猜的数字:"read(*,*)numdo i1,3if (numa)thenpri…...
代码随想录 -- 贪心 -- 单调递增的数字
738. 单调递增的数字 - 力扣(LeetCode) 思路: 首先将正数n转化为字符串类型;定义一个flag:标记flag以及之后的位数都是9;从后向前遍历字符串n,如果当前的位数小于他上一位,将上一位…...

【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)
目录 引言 工具介绍 环境介绍 测试结果 个人主页:东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈,为了保证通信的可靠性,客户端和服务端之间需要建立链接。服务端能并发处理多少个链接,平均每秒钟能处理…...

Window:下载与安装triton==2.0.0
triton2.0.0谷仓下载 创建python3.10的工作环境: conda create -n anti-dreambooth python3.10然后在下载目录下执行代码: pip install triton-2.0.0-cp310-cp310-win_amd64.whl...

零,报错日志 2002-Can‘t connect to server on‘106.54.209.77‘(1006x)
零,报错日志 2002-Can’t connect to server on’106.54.209.77’(1006x) 今天差点被这个报错给折磨疯掉 尝试一:对腾讯云服务器进行更改 尝试二:针对配置文件处理 step1 //确保注释 /etc/mysql/mysql.conf.d/mysqld.cnf 下# bind-addres…...
R语言笔记(一)
文章目录 一、R objects二、Types of data三、Operators1、Operators2、Comparison operators3、Logical operators 四、Check types of data objects五、Convertion between data objects六、R workspace 一、R objects Two basic types of things/objects: data and functio…...

MusePose模型部署指南
一、模型介绍 MusePose是一个基于扩散和姿势引导的虚拟人视频生成框架。 主要贡献可以概括如下: 发布的模型能够根据给定的姿势序列,生成参考图中人物的舞蹈视频,生成的结果质量超越了同一主题中几乎所有当前开源的模型。发布该 pose alig…...

又一次升级:字节在用大模型在做推荐啦!
原文链接 字节前几天2024年9年19日公开发布的论文《HLLM:通过分层大型语言模型增强基于物品和用户模型的序列推荐效果》。 文字、图片、音频、视频这四大类信息载体,在生产端都已被AI生成赋能助力,再往前一步,一定需要一个更强势…...

无线领夹麦克风怎么挑选,麦克风行业常见踩坑点,避雷不专业产品
随着短视频和直播行业的迅速发展,近年来无线领夹麦克风热度持续高涨,作为一款小巧实用的音频设备,它受到很多视频创作者以及直播达人的喜爱。但如今无线领夹麦克风品类繁杂,大家选购时容易迷失方向,要知道并不是所有…...
OJ-1017中文分词模拟器
示例0 输入: ilovechina i,ilove,lo,love,ch,china,lovechina 输出: ilove,china 示例1 输入: ilovechina i,love,china,ch,na,ve,lo,this,is,the,word 输出: i,love,china 说明: 示例2 输入: iat i,love,…...
Unity 关于UGUI动静分离面试题详解
前言 近期有同学面试,被问到这样一道面试题: ”说说UGUI的动静分离是怎么一回事?” 关于这个优化有一些误区,容易让开发者陷入一个极端。我们先分析关于UGUI 合批优化的问题,最后给这个面试题一个参考回答。 对惹,…...

HarmonyNext保存Base64文件到Download下
本文介绍如何保存Base64的文件到Download下 参考文档地址: 保存用户文件-Harmony Next 用到的是DOWNLOAD模式保存文件 用户在使用save接口时,可以将pickerMode配置为DOWNLOAD模式,该模式下会拉起授权接口,用户确认后会在公共路径…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...