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) …...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...
