蓝桥杯准备训练(lesson2 ,c++)
3.1 字符型
char //character的缩写
在键盘上可以敲出各种字符,如: a , q , @ , # 等,这些符号都被称为字符,字符是⽤单引号括
起来的,如: ‘a’ , ‘b’ , ‘@’ 。为了能说明这些字符,给他们抽象出⼀种类型,就是字符型,C
语⾔中就是 char 。
ASCII编码
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。

参考:https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数据:
• 字符 A~Z 的ASCII码值从 65~90
• 字符 a~z 的ASCII码值从 97~122
• 对应的⼤⼩写字符(a和A)的ASCII码值的差值是 32
• 数字字符 0~9 的ASCII码值从 48~57
• 换⾏ \n 的ASCII值是: 10
• ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
#include<iostream>
using namespace std;
int main()
{char c1 = 'Q';cout << c1 << endl;char c2 = 81;cout << c2 << endl;//这⾥的81是字符Q的ASCII码值,也是可以正常打印的return 0;
}
3.2 整形
整型类型是对所有整数的抽象,为了能对整数形成统⼀的类型标识,就有整型;
在 C 和 C++ 中 整型被分为四⼤类: short 、 int 、 long 、 long long 。
short [int]//短整型
int//整型
long [int]//⻓整型
long long [int] //更⻓的整型
3.3 浮点型
浮点型式对所有实数(⼩数)的抽象,为了能对实数进⾏统⼀的类型标识,就有了浮点型。
浮点型有三种:
float//单精度浮点型
double//双精度浮点型
long double//更⻓的双精度浮点型
#include<iostream>
using namespace std;
int main()
{char c = 'a';short s = -10;int i = -10;long l = -10;long long ll = -10;float k = 3.14f;double d = 3.14;long double ld = 3.14;return 0;
}
在C/C++中⼩数的书写形式:
3.14;//编译器会默认识别为double类型
3.14f;//编译器会默认识别为float类型
1e5;//这种写法是科学计数法的形式,意思是1.0*10^5
1e5+10;//1*100000+10 == 100010
1.23e5+10; //1.23*100000+10 = 123010
3.4 布尔类型
C++有⼀种类型叫: bool (布尔类型),布尔类型的变量的值可以是 true 或 false ,这种类型
类型的变量专⻔⽤来表⽰真或假的。当然在C和C++中,0表⽰假,⾮0表⽰真,有时候不使⽤ bool 类型也能表达相同的逻辑。
//代码1
#include <iostream>
using namespace std;
int main()
{bool flag = true;if (flag)printf("I like C++!\n");return 0;
}
//代码2
#include <iostream>
using namespace std;
int main()
{int flag = 0;cin >> flag; //如果输⼊⾮零的值,flag就表⽰真if (flag)printf("I like C++!\n");return 0;
}
3.5 signed 与 unsigned
signed 和 unsigned 关键字修饰字符型和整型类型的。
signed 关键字,表⽰⼀个类型带有正负号,包含负值;⽐如:温度、银⾏存款。
unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数,⽐如:年龄。
有了 signed 和 unsigned 的修饰,字符和整型类型其实更加丰富,可以有以下这些:
//字符型
char
signed char//有符号的字符类型
unsigned char //⽆符号的字符类型//短整型
short [int]
[signed] short [int]//有符号的短整型
unsigned short [int]//⽆符号的短整型//整型
int
[signed] int//有符号的整型
unsigned [int]//⽆符号的整型//⻓整型
long [int]
[signed] long [int] //有符号的⻓整型
unsigned long [int] //⽆符号的⻓整型//更⻓的整型
long long [int]
[signed] long long [int]//有符号的
unsigned long long [int]//⽆符号的
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。
signed int a; //等同于int a,⼀般不写signed
int 类型也可以不带正负号,只表⽰⾮负整数。这时就必须使⽤关键字 unsigned 声明变量。
unsigned int a; // unsigned int:⽆符号整数类型
变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的 signed short int 的取值范围是: -32768~32767 ,最⼤是 32767 ;⽽
unsigned short int 的取值范围是: 0~65535 ,最⼤值增⼤到了 65535 。32位的 signed
int 的取值范围可以参看 climits 中给出的定义。
下⾯的定义是Dev-C++环境中, climits 中相关定义,其实如果仔细看 climits 中也是包含的
limits.h 。
#define SHRT_MIN (-32768)//有符号16位整型的最⼩值
#define SHRT_MAX 32767//有符号16位整型的最⼤值
#define USHRT_MAX 0xffffU//⽆符号16位整型的最⼤值
#define INT_MIN (-2147483647 - 1)//有符号整型的最⼩值
#define INT_MAX 2147483647//有符号整型的最⼤值
unsigned int ⾥⾯的 int 可以省略,所以上⾯的变量声明也可以写成下⾯这样。
unsigned a;
字符类型 char 也可以设置 signed 和 unsigned 。
signed char c;// 范围为 -128 到 127
unsigned char c;// 范围为 0 到 255
3.6 数据类型⻓度
每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。
3.6.1 sizeof 操作符
sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算特定数据类型的⻓度的,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量名或者表达式, sizeof 的操作数如果不是类
型,是表达式的时候,可以省略掉后边的括号的。
sizeof( 类型 )
sizeof 表达式
sizeof 的计算结果是 size_t 类型的, size_t 指的是⽆符号整数(该类型包含了所有可能的
unsigned int , unsigned long , unsigned long long 等类型,具体是取决于编译器
的)。
#include <iostream>
using namespace std;
int main()
{int a = 10;cout << sizeof(a) << endl;cout << sizeof a << endl;//a是变量的名字,可以省略掉sizeof后边的(),但不建议去掉cout << sizeof(int) << endl;return 0;
}
3.6.2 各数据类型⻓度
#include <iostream>
using namespace std;
int main()
{cout << sizeof(char) << endl;cout << sizeof(bool) << endl;cout << sizeof(short) << endl;cout << sizeof(int) << endl;cout << sizeof(long) << endl;cout << sizeof(long long) << endl;cout << sizeof(float) << endl;cout << sizeof(double) << endl;cout << sizeof(long double) << endl;return 0;
}
在DevC++下的输出:
1
1
2
4
4
8
4
8
16
该如何理解这些数据类型的⻓度呢?其实我们使⽤这些数据类型可以向内存申请空间(就是创建变
量),不同的数据类型⼀次性申请的空间⼤⼩是有差异的。你可以这样理解:

3.7 各类型取值范围
前⾯的知识已经让我们了解到了很多的数据类型,不同的数据类型所创建的变量的⻓度是有差异的,这个⻓度差异⼜决定了,这种变量中能存储的值的⼤⼩。
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。
下⾯是不同数据类型的取值范围。

为了代码的可移植性,和⽅便记忆,需要知道某种整数类型的极限值时,经常使⽤这些速记的符号。
limits.h ⽂件中说明了整型类型的取值范围。(C++中头⽂件的名字是 )
float.h 这个头⽂件中说明浮点型类型的取值范围。(C++中头⽂件的名字是 )
⼤家对这些类型的取值范围还得⼤概知道取值范围的数量级,像 int 类型取值⼤概就
是:-2.1*109~2.1*109,这⾥就是10^9这样的数量级。
3.8 typedef
在C++中有⼀个关键字是和类型有关的,是⽤来给类型重命名的。当有⼀个类型⽐较复杂的时候,可以简化类型。 typedef 在竞赛中经常使⽤,可以提升编码速度。typedef使⽤的基本语法形式:
typedef 旧类型名 新类型名;
⽐如:
typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ull;
上⾯代码的意思是将 unsigned int 类型重命名为 uint ,使⽤ uint 创建的变量和使⽤
unsigned int 是⼀样的,其他⼏个也是⼀样的道理。
uint num1 = 0;//等价于 unsigned int num1 = 0;
ll num2 = 0; //等价于 long long num2 = 0;
ull num3 = 0; //等价于 unsigned long long num3 = 0;
3.9 课后练习
练习1:整数
链接:https://ac.nowcoder.com/acm/problem/21985
#include <iostream>
using namespace std;
int main()
{int a;cin >> a;cout << a;return 0;
}
练习2:打印字符
链接:https://www.luogu.com.cn/problem/B2018
#include <iostream>
using namespace std;
int main()
{int n = 0;cin >> n;char ch = n;cout << ch << endl;return 0;
}
练习3:倒序
链接:https://ac.nowcoder.com/acm/problem/21993
#include <iostream>
using namespace std;
int main()
{int a = 0;int b = 0;int c = 0;cin >> a >> b >> c;cout << c << " " << b << " " << a << endl;return 0;
}
练习4:整型数据类型存储空间⼤⼩
链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1016
#include <iostream>
using namespace std;
int main()
{int n = 0;short s = 0;cout << sizeof(n) << " " << sizeof(s) << endl;return 0;
}
以上就是今天所有的学习内容,由于我们从最基础开始学习,希望大家不要觉得题目太简单就直接跳过,防止与课程进度脱节。
相关文章:
蓝桥杯准备训练(lesson2 ,c++)
3.1 字符型 char //character的缩写在键盘上可以敲出各种字符,如: a , q , , # 等,这些符号都被称为字符,字符是⽤单引号括 起来的,如: ‘a’ , ‘b’ &…...
【力扣】2094.找出3为偶数
思路 方法一:使用Set集合 1.首先是三层for循环,遍历,并且遇到不满足的情况,便跳过,继续计算。不如前导为0,以及遍历同一个数组下标的情况 2.使用Set集合来确保答案是唯一的,使用桶来标记也是可以的 3.但是…...
利用红黑树封装map,和set,实现主要功能
如果不知道红黑树是什么的时候可以去看看这个红黑树 思路 首先我们可以把封装分为两个层面理解,上层代码就是set,和map,底层就是红黑树 就相当于根据红黑树上面套了两个map,set的壳子,像下面这张图一样 对于map和set,map里面存…...
网络(TCP)
目录 TCP socket API 详解 套接字有哪些类型?socket有哪些类型? 图解TCP四次握手断开连接 图解TCP数据报结构以及三次握手(非常详细) socket缓冲区以及阻塞模式详解 再谈UDP和TCP bind(): 我们的程序中对myaddr参数是这样…...
CSS 选择器的优先级
一、基本概念 CSS 选择器的优先级决定了在样式冲突时,哪个样式规则将被应用到 HTML 元素上。通过理解 CSS 选择器的优先级,可以更好地控制网页元素的样式,避免样式冲突。 二、优先级计算规则 1. 内联样式 内联样式具有最高的优先级。 &l…...
留学生数学辅导作业随机过程高等线性代数概率论微积分优化统计
针对留学生数学辅导作业中的随机过程、高等线性代数、概率论、微积分、优化以及统计等科目,以下是一些详细的辅导建议和资源概述: 一、随机过程 概念理解: 随机过程是研究随机现象随时间演变的数学分支。它涉及概率论和数理统计的知识&#…...
移动机器人课程建图实验-ROSbug汇总
问题1描述 $ rosrun robot_state_publisher robot_state_publisher [ERROR] [1733131886.474757207]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...解决方案 这个错误信息表明 robot_state_publisher 节点无法联系到 ROS master。通常&…...
小家电出海,沃丰科技助力保障售后服务的及时性与高效性
随着全球化步伐的加快,小家电行业也逐渐迈向国际市场,面向全球消费者提供服务。然而,跨国界的销售和服务挑战也随之而来,尤其是售后服务的及时性与高效性成为了企业亟需解决的问题。沃丰科技凭借其全渠道在线客服、工单系统和视频…...
vscode 如何支持点击跳转函数,以C++为例,Python等其它编程语言同理,Visual Studio Code。
VScode(Visual Studio Code)按住Ctrl鼠标左键,没法跳转到对应的函数怎么办。 如下图所示 1、点击有四个小方块的图标 2、输入C(如果你的编程语言是C,其它的就输其它的) 3、找到C Extension(其它编程语言࿰…...
创建子类对象时,会创建父类对象吗
一、查询网上的结论: 创建子类对象时, 会先调用子类构造方法对子类对象进行初始化,子类构造方法的第一行又会调用父类构造方法对父类进行初始化(不会创建父类对象, 但是会在子类对象的内存空间中开辟一块被包含的内存空间存储父类…...
华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数
华为交换机WEB操作 使用的是真机S5735,目前主流的版本都适用(V1R5~V2R1的就不在列了,版本太老了,界面完全不一样,这里调试线接的console口,电脑的网络接在ETH口) 「模拟器、工具合集」复制整段内…...
MongoDB分片集群架构实战
分片集群架构 分片简介 分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。分片在概念上非常类似于应用开发中的“水平分表”。不同的点在于,MongoDB本身就自带了分片管理的能力&#…...
架构 | 调优 - [zookeeper]
INDEX 0 实际使用的 zoo.cfg1 基础知识1.1 官网文档1.2 日志相关配置1.3 tick 时间 0 实际使用的 zoo.cfg ### 时间配置 ### 一个tick(滴答)的毫秒数,时间单位,可以认为是心跳时间 tickTime2000 ### follower 连接 leader 并与之…...
威联通-004 安装photoview相册应用Docker镜像
文章目录 前言准备MariaDB 10phpMyAdminphotoview 安装步骤1.安装MariaDB 10和phpMyAdmin2.初始安装MariaDB 103.进入phpMyAdmin添加账户4.手动下载photoview的Docker库注意:安装 phpMyAdmin 报错5.配置photoview6.容器安装成功之后进入photoview注意:这…...
Github clone 的时候出现Error in the HTTP2 framing layer错误
解决方案 github鉴权认证,打开gitbash,并输入 ssh-keygen -t rsa -C "emailicjs.cc" 执行后会在 .ssh 目录生产两个文件:id_rsa(私有密钥)和id_rsa.pub(公开密钥) 直接默认回车执行…...
SpringBoot中@Import和@ImportResource和@PropertySource
1. Import Import注解是引入java类: 导入Configuration注解的配置类(4.2版本之前只可以导入配置类,4.2版本之后也可以导入普通类)导入ImportSelector的实现类导入ImportBeanDefinitionRegistrar的实现类 SpringBootApplication…...
OpenCV 简介与安装方法
大家好啊,我是董董灿。 如果你在做计算机视觉相关的工作,肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分,我曾经使用 OpenCV 进行了很多图像的处理,比如边缘检测。 刚好最近在整理一份文稿,…...
pycharm基本库安装的几种方法
1、pycharm基本库安装的几种方法 1)一次性设置下载源 cmd窗口(管理员方式).输入以下命令: pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple pip config set global.trusted-host pypi.tuna.tsinghu…...
安装更新upgrade导致ubuntu崩溃
安装更新导致ubuntu崩溃 前言uuid编不过,导致的崩溃 记录一些ubuntu崩溃的过程。 目前只有一个,以后遇到都放在这里,以提醒自己。 前言 如果从10000年看现在的linux,不是说不完美,而是糟透了。 linux的版本号…...
数学建模选MATLAB还是Python?
选择MATLAB还是Python进行数学建模,取决于多个因素,包括你的具体需求、个人偏好、项目要求以及你已有的技能。以下是一些考虑因素: 1. 易用性: • MATLAB:对于数学和工程问题,MATLAB提供了一个非常直观和…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
