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) …...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
