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模式,该模式下会拉起授权接口,用户确认后会在公共路径…...
069_基于springboot的OA管理系统
目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…...
hive数据库,表操作
1.创建; create database if not exists myhive; use myhive; 2.查看: 查看数据库详细信息:desc database myhive; 默认数据库的存放路径是 HDFS 的: /user/hive/warehouse 内 补充:创建数据库并指定 hdfs 存储位置:create database myhive2 location /myhive2 3.…...
openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素
文章目录 openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素概述笔记设置后的顶部相机效果设置后的底部相机效果 备注END openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素 概述 用自己编译的基于openpnp-…...
Vue+TypeScript+SpringBoot的WebSocket基础教学
成品图: 对WebSocket的理解(在使用之前建议先了解Tcp,三次握手,四次挥手 ): 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…...
大话网络协议:HTTPS协议和HTTP协议有何不同?为什么HTTPS更安全
大家现在访问网络,浏览网页,注意一下的话,网址前面基本上都是一个 https:// 的前缀,这里就是说明这个网址所采用的协议是 https 协议。那么具体应该怎么理解 https 呢? 本文我们就力争能清楚地解释明白这个我们目前应该最广的协议。 理解HTTP协议 要解释 https 协议,当…...
13图书归还-云图书管理系统(Vue3+Spring Boot+element plus)
目录 1 接口地址2 后台代码RecordControllerBookController 3 view/books/BookRecordsVue中前端框架搭建4 api/record.js文件写查询用户借阅记录的接口代码5 api/book.js中写归还图书、查询当前借阅图书接口代码6 BookRecordsVue中导入接口函数,并调用7 运行效果 1 …...
中航资本:“女人的茅台”重挫!超7700亿元英伟达概念业绩爆发
今天早盘首要指数强势震动,申万一级工作指数跌多涨少,通讯指数涨逾1%居首。概念方面,存储器、动保、重组等概念板块涨幅居前。存储概念大涨首要仍是AI方向又有好消息,市值逾越7700亿元的英伟达概念龙头SK海力士发布效果超预期财报…...
day7:软件包管理
一,软件包概述 软件包概述 软件包用于安装,升级,卸载一个软件 软件包类型 二进制包 源码经过了编译(而且成功了)后产生的包,二进制包是linux下默认的安装包 编译好的文件,直接使用ÿ…...
探索Konko AI:快速集成大语言模型的最佳实践
探索Konko AI:快速集成大语言模型的最佳实践 引言 随着大语言模型(LLM)的普及,如何快速方便地集成这些模型成为众多开发者关注的焦点。Konko AI 提供了一个全面管理的 API,使开发者能够选择合适的开源或专有大语言模…...
网络地址和本地网络地址
本地网络地址(Local Network Address,简称 LNA)是指在一个子网内用于标识特定主机的部分。在 IPv4 地址中,一个完整的 IP 地址由两部分组成:网络地址部分(Network Address)和本地网络地址部分&a…...
傻瓜自助建站软件/品牌推广方案怎么写
由InfoQ中文站推出的电子杂志《架构师》8月刊已经发布!该杂志是InfoQ中文站于2008年推出试刊,于2009年7月正式创刊的全新电子杂志, 面向高端开发人员和项目经理。和以往的各期一样,本期《架构师》向大家提供过去一个月中InfoQ中文…...
职友集 一家做职业点评的网站/搜索引擎优化的主要特征
基于欧几里得距离的损失函数:Contrastive loss、Triplet loss、Center LossSoftmax loss Softmax loss适用于多分类,只具有可分离性(separable),即将类间分离,而没有判别性(discriminative),即不能类内聚合。而人脸识别…...
官方网站查询电工证/信息流推广渠道有哪些
备份数据库(包含全部表和全部存储过程):C:\Documents and Settings\Administrator>mysqldump -h localhost -u root -p -R bannei >d:/log/mydb.sqlEnter password: ****** //备份数据库所有表C:\Documents and Settings\Administrator…...
菏泽网站推广/推广怎么做
看到网上很多人说在批量监控主机的时候用自动发现,什么用ip段,然后通过zabbix.agent的system.uname来做,然,现实中只要这个一打开,当然我的频率设置的比较低,我不想等,zabbix立马【Zabbix disco…...
商城网站如何建设/小说百度风云榜
本故事纯属改编 如有共鸣 实属意外-说到“家”,一下想起了小时候学的儿歌:“小毛虫的摇篮是树叶,住在花瓣上的是蝴蝶……我最幸福了,一生下来爸爸妈妈就准备好了家,让我安安稳稳地在家里长大。”从那时起,我…...
厦门做网站优化的公司/百度seo外包
从IOS角度看http url是服务器上资源的一个位置,作为这个规则一个单独的资源可能和很多url有关系,但…...