当前位置: 首页 > news >正文

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

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

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

相关文章:

C++ (一) 基础语法

基础语法&#xff1a;C的开胃小菜 欢迎来到C的世界&#xff0c;这里是编程的盛宴&#xff0c;也是逻辑的迷宫。别担心&#xff0c;我们不会一开始就让你啃硬骨头&#xff0c;而是从基础语法开始&#xff0c;让你慢慢品尝编程的美味。准备好了吗&#xff1f;让我们开始这场编程…...

Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度

一、前言说明 在使用百度地图的路书功能中&#xff0c;并没有提供移动的信号以及移动结束的信号&#xff0c;但是很多时候都期望拿到移动的哪里了以及移动结束的信号&#xff0c;以便做出对应的处理&#xff0c;比如结束后需要触发一些对应的操作。经过搜索发现很多人都有这个…...

C 语言介绍及操作案例

C 语言是一种广泛使用的通用编程语言,具有高效、灵活和可移植性强等特点。 一、C 语言的基本特点 简洁高效 C 语言语法简洁,表达能力强。它提供了丰富的数据类型和运算符,可以方便地进行各种计算和操作。C 语言的代码执行效率高,能够直接访问硬件资源,适用于对性能要求较…...

Ivanti云服务被攻击事件深度解析:安全策略构建与未来反思

攻击事件背景 近期&#xff0c;威胁情报和研究机构Fortinet FortiGuard Labs发布了一份关于针对IT解决方案提供商Ivanti云服务设备&#xff08;Ivanti Cloud Services Appliance&#xff0c;CSA&#xff09;的复杂网络攻击的详细分析。 该攻击被怀疑是由国家级对手发起&#xf…...

如何做出正确选择编程语言:关于Delphi 与 C# 编程语言的优缺点对比

概述 为您的项目选择正确的技术可能是一项相当棘手的任务&#xff0c;尤其是当您以前从未需要做出这样的选择时。如今可用的选项范围非常广泛。虽然一些编程语言和工具有着相当悠久的历史&#xff0c;但其他一些则是刚刚开始赢得开发人员青睐的新手。 在这篇博文中&#xff0…...

39.3K Star,一个现代的数据库ORM工具,专为Node.js和TypeScript设计

大家好&#xff0c;今天给大家分享一个现代的数据库对象关系映射&#xff08;Object-Relational Mapping&#xff0c;ORM&#xff09;工具Prisma ORM&#xff0c;它旨在简化数据库操作&#xff0c;提高开发效率&#xff0c;并确保类型安全。 项目介绍 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 管理网络命令&#xff1a; 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*,"请输入您猜的数字&#xff1a;"read(*,*)numdo i1,3if (numa)thenpri…...

代码随想录 -- 贪心 -- 单调递增的数字

738. 单调递增的数字 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 首先将正数n转化为字符串类型&#xff1b;定义一个flag&#xff1a;标记flag以及之后的位数都是9&#xff1b;从后向前遍历字符串n&#xff0c;如果当前的位数小于他上一位&#xff0c;将上一位…...

【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)

目录 引言 工具介绍 环境介绍 测试结果 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈&#xff0c;为了保证通信的可靠性&#xff0c;客户端和服务端之间需要建立链接。服务端能并发处理多少个链接&#xff0c;平均每秒钟能处理…...

Window:下载与安装triton==2.0.0

triton2.0.0谷仓下载 创建python3.10的工作环境&#xff1a; conda create -n anti-dreambooth python3.10然后在下载目录下执行代码&#xff1a; pip install triton-2.0.0-cp310-cp310-win_amd64.whl...

零,报错日志 2002-Can‘t connect to server on‘106.54.209.77‘(1006x)

零&#xff0c;报错日志 2002-Can’t connect to server on’106.54.209.77’(1006x) 今天差点被这个报错给折磨疯掉 尝试一&#xff1a;对腾讯云服务器进行更改 尝试二&#xff1a;针对配置文件处理 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是一个基于扩散和姿势引导的虚拟人视频生成框架。 主要贡献可以概括如下&#xff1a; 发布的模型能够根据给定的姿势序列&#xff0c;生成参考图中人物的舞蹈视频&#xff0c;生成的结果质量超越了同一主题中几乎所有当前开源的模型。发布该 pose alig…...

又一次升级:字节在用大模型在做推荐啦!

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

无线领夹麦克风怎么挑选,麦克风行业常见踩坑点,避雷不专业产品

​随着短视频和直播行业的迅速发展&#xff0c;近年来无线领夹麦克风热度持续高涨&#xff0c;作为一款小巧实用的音频设备&#xff0c;它受到很多视频创作者以及直播达人的喜爱。但如今无线领夹麦克风品类繁杂&#xff0c;大家选购时容易迷失方向&#xff0c;要知道并不是所有…...

OJ-1017中文分词模拟器

示例0 输入&#xff1a; ilovechina i,ilove,lo,love,ch,china,lovechina 输出&#xff1a; ilove,china 示例1 输入&#xff1a; ilovechina i,love,china,ch,na,ve,lo,this,is,the,word 输出&#xff1a; i,love,china 说明&#xff1a; 示例2 输入: iat i,love,…...

Unity 关于UGUI动静分离面试题详解

前言 近期有同学面试&#xff0c;被问到这样一道面试题: ”说说UGUI的动静分离是怎么一回事&#xff1f;” 关于这个优化有一些误区&#xff0c;容易让开发者陷入一个极端。我们先分析关于UGUI 合批优化的问题&#xff0c;最后给这个面试题一个参考回答。 对惹&#xff0c;…...

HarmonyNext保存Base64文件到Download下

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

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

AI,如何重构理解、匹配与决策?

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

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 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的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...