AcWing语法基础班 1.1 变量、输入输出、表达式和顺序语句
预备知识
首先先来了解一下最简单的C++代码。
本文的所有代码操作均在AcWing的AC Editor中
#include <iostream>using namespace std;int main(){cout << "Hello World" << endl;return 0;
}
然后使用编译(点击调试,再点击运行代码,最后点击运行按钮)
代码主要分成几个部分
- 头文件区(#include<**********>)例如:
#include<cstdio>
#include<iostream>
- 声明一个命名空间
using namespace std;
命名空间是为了解决大型项目中变量名冲突的问题,不同命名空间内的变量名可以相同。
- 程序的执行入口
int main(){return 0;
}
以上的三部分是C++通用的基本结构,必须具备的结构
语法基础知识
1. 变量的定义
变量类似于数学中方程的未知数。
在定义变量的时候,要赋予变量类型。
C++中,变量有以下几种类型:
同时还要考虑字节的问题:
bit(位,又名“比特”):bit的缩写是b,是计算机中的最小数据单位(属于二进制的范畴,其实就是0或者1)
Byte(字节):Byte的缩写是B,是计算机文件大小的基本计算单位。比如一个字符就是1Byte,如果是汉字,则是2 Byte。
在计算机存储中,B 和 b 是具有不同含义的。
B:Byte(字节)
b:bit(比特)
1 Byte = 8 bit(一字节就是八位)
1 KB(Kilobyte) = 1024 B
1 MB (Megabyte)= 1024 KB
1 GB (Gigabyte)= 1024 MB
1TB (Terabyte)= 1024GB
不同变量所占的内存大小是不一样的,根据不同的变量类型,会占用不同的内存空间。
分为整型、浮点型、字符型、字符串型、布尔型和转义字符
整型(整型变量表示整数类型的数据。)
| 数据类型 | 占用空间 | 取值范围 |
|---|---|---|
| short(短整型) | 2字节 | (-2^15 ~ 2^15) |
| int(整形) | 4字节 | (-2^31 ~ 2^31) |
| long(长整型) | 4字节(Windows系统) | (-2^31 ~ 2^31) |
| long long | 8字节 | (-2^63~ 2^63) |
浮点型(浮点型变量表示小数类型的数据)
| 数据类型 | 占用空间 |
|---|---|
| float | 4字节 |
| double | 8字节 |
C++输出多位小数时默认会显示6位有效数字。
.2f表示输出两位小数,.5f表示输出五位小数。
字符型(字符型变量可表示单个字符)
| 数据类型 | 占用空间 |
|---|---|
| char | 1字节 |
字符型变量是将对应的ASCII编码存放至内存,而不是字符本身。
ASCII码表
字符串型
(1)C语言: char 变量名[] = “字符串值”;
(2)C++语言: string 变量名 = “字符串值”;
#include <iostream>
#include <string>
using namespace std;int main() {//Cchar c[] = "hello c!";cout << c << endl;//C++string cpp = "hello cpp!";cout << cpp << endl;return 0;
}
布尔类型 (布尔数据类型表示真或假的值)
| 数据类型 | 占用空间 |
|---|---|
| bool | 1字节 |
(1)true: 真(本质是1)
(2)false:假(本质是0)
注:C++的bool类型中,true 或 任意非0值 均代表真; false 或 0值 代表假。
转义字符(表示一些特殊的无法直接显示的ASCII字符)
用反斜杠开头(\n,\t,\r 等)
C语言中使用转义字符 \n 换行,C++中使用 endl 换行。
声明变量
那么如何定义变量呢?
变量定义的方式:
声明变量类型+变量名
int a;
char b='a';
float c = 1.5, s=1.235e2;
double d;
int q, w = 2;
bool i = true;
变量必须先定义,才可以使用。不能重名。
一段完整的定义变量程序如下:
#include <iostream>using namespace std;int main()
{int a = 5;int b, c = a, d = 10 / 2;return 0;
}
2. 变量的输入输出
在程序中,输入输出是非常重要的,针对不同的变量类型,往往会有不同的输入输出方式。
下面,我们通过一些简单的程序来学习。
整数的输入输出:
#include <iostream>using namespace std;int main()
{int a, b;cin >> a >> b;cout << a + b << endl;//endl表示回车cout << a * b << endl;return 0;
}
字符串的输入输出:
#include <iostream>
#include <string>using namespace std;int main()
{string str;cin >> str;cout << str;return 0;
}
输入输出多个不同类型的变量:
#include <iostream>
#include <string>using namespace std;int main()
{int a, b;string str;cin >> a;cin >> b >> str;cout << str << " !!! " << a + b << endl;return 0;
}
箭头的方向可以这样理解:
键盘向cin函数传值,cin再向变量传值,故输入的箭头方向从cin指向变量,即>>
从变量向cout函数传值,cout再输出到显示器,故输出的箭头放行从变量指向cout,即<<
cin和cout会过滤空格(a______b和a_b从cin输入,结果是一样的)
%c会读取空格,需要注意。
同时,在C++语言中同样可以使用C语言中的 scanf 和 printf 。
这两个函数的使用方法如下:
scanf("%d%d",&a,&b);
printf("%d%d",a,b);
%d为类型控制符。

给两个整型变量赋值就写两个 %d,然后“输入参数”中对应写上两个 “取地址变量” ;给三个整型变量赋值就写三个 %d,然后“输入参数”中对应写上三个 “取地址变量”,要在数量上保持对应。
scanf在输入时,从键盘输入数据时,给 多个变量赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分给不同变量赋的值。而且空格、回车或 Tab 键的数量不限,只要有就行。 一般都使用一个空格。
完整的简单程序参考如下:
#include<cstdio>
#include<iostream>using namespace std;int main(){int a;int b;scanf("%d%d",&a,&b);printf("%d%d", a, b);return 0;}
3. 常见的运算表达式
加减乘除

#include <iostream>
#include <string>using namespace std;int main()
{int a = 6 + 3 * 4 / 2 - 2;cout << a << endl;int b = a * 10 + 5 / 2;cout << b << endl;cout << 23 * 56 - 78 / 3 << endl;return 0;
}
C++的取余运算中,结果的正负取决于第一个数,即:
5 % 2 = 1
5 %(-2)= 1
-5 % (-2)= -1
-5 % 2 = -1
注意,取余操作只针对整数运算。
整数的自增自减运算:
#include <iostream>using namespace std;int main()
{int a = 1;int b = a ++ ;cout << a << ' ' << b << endl;int c = ++ a;cout << a << ' ' << c << endl;return 0;
}
a++:先赋值,再自增
++a:先自增,再赋值
加号在前就先自增,加号再后,就后自增
a–和–a道理相同
变量的类型转换:
#include <iostream>
#include <string>using namespace std;int main()
{float x = 123.12;int y = (int)x;cout << x << ' ' << y << endl;return 0;
}
相关文章:
AcWing语法基础班 1.1 变量、输入输出、表达式和顺序语句
预备知识 首先先来了解一下最简单的C代码。 本文的所有代码操作均在AcWing的AC Editor中 #include <iostream>using namespace std;int main(){cout << "Hello World" << endl;return 0; }然后使用编译(点击调试,再点击运…...
DC:5靶机通关详解
信息收集 漏洞发现 扫个目录 发现存在footer.php 查看,发现好像没什么用 参考他人wp得知thankyou.php会包含footer.php 可以通过传参来包含别的文件 但是我们不知道参数,这里用fuzz来跑参数 这里用wfuzz的时候报错了 解决方法如下 卸载 sudo apt --purge remove python3-pycu…...
【测试开发篇9】Junit框架
目录 一、认识Junit框架 Junit和Selenium的关系是什么 导入Junit框架common-io包 二、Junit框架的使用 2.1Junit有哪些常用注解 2.1.1Test注解 2.1.2BeforeEach 2.1.3BeforeAll 2.1.4AfterAll 2.1.5AfterEach 2.2Junit的断言 Assertions.assertEquals(期待值&#…...
《Spring MVC》 第五章 实现RESTful
前言 教授大家如何实现RESTful 1、什么是RESTful resource Representational State Transfer 的缩写,就是“表现层资源表述状态转移” 1.1、Resource(资源) web应用的文件,uri定位 1.2、Representation(资源的描…...
Last Week in Milvus
What’s New Core Updates #23353 在 2.3 版本中, milvus 和 knowhere 引擎会移除了 Annoy 索引。Annoy 索引在性能和召回率方面均不如 IVF、HNSW 等索引,维护成本比较高所以经过讨论决定在 2.3 中移出 Annoy 索引的支持,有使用的用户要注意…...
Cursor IDE一个GPT4人工智能自动程序编辑器
让我们来了解一下Cursor IDE是什么。Cursor IDE是一个新型的编程工具,可以通过它生成、编辑以及与人工智能进行交互分析代码。官方网站上的三个单词“Build Software. Fast.”(快速构建软件)以及“Write, edit, and chat about your code wit…...
PPO算法-理论篇
1. Policy Gradient 【李宏毅深度强化学习笔记】1、策略梯度方法(Policy Gradient) 李宏毅深度强化学习-B站 2. PPO PPO 算法 PPO算法更新过程如下: 初始化policy参数 θ 0 \theta^0 θ0在每一步迭代中: 使用 θ k \theta^k …...
【现货】AP6317 同步3A锂电充电芯片 带短温度保护
AP6317是一款面向5V交流适配器的3A锂 离子电池充电器。它是采用800KHz固定频率的同 步降压型转换器,因此具有高达92%以上的充电效 率,自身发热量极小。 包括完整的充电终止电路、自动再充 电和一个精确度达1%的4.2V预设充电电压,内 部集成了防…...
MyBatis详解(2)
8、自定义映射resultMap 8.1、resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射 <!--resultMap:设置自定义映射属性:id:表示自定义映射的唯一标识type:查询…...
2023-04-14 使用纯JS实现一个2048小游戏
文章目录 一.实现思路1.2048的逻辑2.移动操作的过程中会有三种情况 二.代码部分:分为初始化部分和移动部分1.初始化部分1.1.生成第一个方块:1.2.生成第二个方块: 2.移动过程部分: 三.实现代码1.HTML部分2.CSS部分3.JS部分3.1.game对象的属性3.2.game对象的start方法3.3.game对象…...
C++入门(3)
C入门 1.auto关键字(C11)1.1. 类型别名的思考1.2. auto简介1.3. auto使用情景1.4. auto的使用细则1.5. auto不能推导的场景 1.auto关键字(C11) 1.1. 类型别名的思考 随着程序越来越复杂,程序中用到的类型也越来越复杂…...
【亲测有效】更新了WIN11之后 右键无 新建WORD,PPT,EXCEL 选项 问题 解决方案
原本正常的正版系统,在昨天4月自动更新安装之后,发现右键找 不到新建文档了,word,ppt,excel都不见了。 看了网上大神的方法 Win11安装了Office右键没有新建Excel选项怎么办? - 知乎 可以解决一部分 官方解决方案,亲…...
2023年4月北京/西安/郑州/深圳CDGA/CDGP数据治理认证考试报名
DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…...
Win10桌面我的电脑怎么调出来?最简单方法教学
Win10桌面我的电脑怎么调出来?有用户发现自己的电脑桌面没有我的电脑这个程序图标,每次要访问磁盘的时候,开启都非常的麻烦。那么怎么将这个图标设置到桌面显示呢?接下来我们一起来看看以下的解决方法吧。 方法一: 在开…...
开启单细胞及空间组学行业发展黄金时代!首届国际单细胞及空间组学大会在穗闭幕
2023年4月16日,首届TICSSO国际单细胞及空间组学大会圆满闭幕,本次大会吸引了2000余位来自产、学、研、资、医、政、媒等业界人士齐聚羊城,注册总人数5398人,网络播放总量达548245人次,网络观看覆盖美国、德国、日本、澳…...
YOLOv8 更换主干网络之 GhostNetV2
《GhostNetV2:Enhance Cheap Operation with Long-Range Attention》 轻量级卷积神经网络(CNN)是专门为在移动设备上具有更快推理速度的应用而设计的。卷积操作只能捕捉窗口区域内的局部信息,这防止了性能的进一步提高。将自注意力引入卷积可以很好地捕捉全局信息,但这将大…...
高级服务框架(黑马)
一、修改order-service服务 修改OrderService,让其监听Nacos中的sentinel规则配置。 具体步骤如下: 1.引入依赖 在order-service中引入sentinel监听nacos的依赖: <dependency><groupId>com.alibaba.csp</groupId><…...
Go语言面试题--基础语法(29)
文章目录 1.下面的代码有什么问题?2.下面代码最后一行输出什么?请说明原因3.下面代码有什么问题?4.下面的代码输出什么? 1.下面的代码有什么问题? func main() {data : []int{1,2,3}i : 0ifmt.Println(data[i]) }参考…...
毕业生招聘信息的发布与管理系统(论文+设计)
前 言 当今,人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动…...
mysql安全加固配置文档(完结)
4. MySQL 权限安全配置 4.1. 确保只有管理员账号有所有数据库的访问权限 建议理由 除了管理员账号,其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。检查方法 SELECT user, host FROM MySQL.user WHERE (Select_priv Y) OR (Insert_priv Y) …...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
