首页 > 编程语言 >C++强化 | 06 一篇文章带你掌握字符数组

C++强化 | 06 一篇文章带你掌握字符数组

时间:2022-12-26 16:31:33浏览次数:65  
标签:总结 字符 06 C++ 转义字符 数组 类型


导读

数组是信息学中非常重要的一块内容,可以说是必备的,也几乎是信息学竞赛中写代码必用的。前面的三节课,我们讲了一维数组,让大家对一维数组有了更加全面深刻的认知。


本篇文章中,让我们一起来了解数组的类型,字符数组,字符数组的输入问题和转义字符吧!

温故而知新,可以为师矣

【NOIP竞赛/CSP认证】

▶  赛前必看!信息学名师带你复习NOIP竞赛初赛及CSP认证初赛


【信息学精华帖】

▶  信息学的万般好处!附C++必备基础知识总结

▶  信息学提高班知识体系详解与家长常见问题解答!让孩子赢在提高班学习的起跑线!


【C++提高班教程】

▶  C++强化 | 01 新学期再出发!温故知新!

▶  C++强化 | 02 继续前行,三大结构终极介绍

▶  C++强化 | 03 一维数组入门

▶  C++强化 | 04 数组越界

▶  C++强化 | 05 那些必须掌握的一维数组经典应用


【C++基础班教程】

▶  C++总结 | 01 程序的世界

▶  C++总结 | 02 输出、换行与注释

▶  ​C++总结 | 03 变量定义、赋值与运算​

▶  ​C++总结 | 04 算术运算符与赋值运算符​

▶  ​C++总结 | 05 cin语句​

▶  ​C++总结 | 06 程序中的数据类型​

▶  ​C++总结 | 07 数据类型补充​

▶  ​C++总结 | 08 顺序结构​

▶  ​C++总结 | 09 if 和 if-else​

▶  C++总结 | 10 if嵌套与逻辑运算符

▶  C++总结 | 11 开关语句switch-case

▶  C++总结 | 12 for循环及其应用

▶  C++总结 | 13 数据范围与数据类型

▶  C++总结 | 14 break与continue

▶  C++总结 | 15 while与do-while

▶  C++总结 | 16 循环嵌套及其应用


​ ​ ​ ​ ​


1 说在前面的话

继续前行、不断攻坚克难!


前面三节课,我们围绕数组讲了数组的基本概念,讲了数组中要注意的数组越界问题。大家也通过这三节课,对数组有了更加深刻的认识。


前面三节课,我们定义的都是整数类型的数组,除了整数类型的数组,其他还有哪些类型的数组呢?哪种数组是我们还需要特别注意和掌握的呢?让我们一起走进今天的课程吧!

2 数组类型

之前我们讲过了int类型的数组,其他还有哪些类型的数组呢?


我想大家的变量的数据类型,有如下几种:


整数类型
浮点类型
字符类型
字符串类型
布尔类型


我们也知道数组就是多个相同类型数据数据构成的序列。


所以数组的类型和变量的类型是对应的,我们可以使用如下方式定义数组:


int a[5]; //定义一个整数类型数组,存放整数
float b[5]; //定义一个浮点类型数组,存放小数
char c[5]; //定义一个字符类型数组,存放字符
string s[5]; //定义一个字符串类型数组,存放字符串
bool bo[5]; //定义一个bool类型数组,存放true和false


3 字符数组

上面不同数据类型的数组,万变不离其宗,掌握一个,就可以掌握剩下的,其中有一个比较独特的数组——字符数组。接下来让我们一起走进字符数组的世界吧!

1 字符数组

字符数组是比较独特的,为什么呢?


因为和字符数组有几个独特的功能需要我们掌握:


字符数组的输入与输出
转义字符
ASCII码




字符数组的定义方式如下:


char a[100];


接下来让我们深入掌握字符数组吧!




2 字符数组的输入输出

第一个比较重要的就是字符数组的输入和输出!


如果我们使用cin输入,就会在空格处截断:


#include<iostream>
using namespace std;
int main(){
char c[5];
cin>>c;
cout<<c<<endl;
return 0;
}


执行结果如下:


C++强化 | 06 一篇文章带你掌握字符数组_转义字符


为了解决这个问题,我们利用一个新的头文件,帮我们实现这个功能:


#include<cstdio>


该功能的使用方法如下,我们可以通过下面的代码帮我们读取黑窗体中写入的字符数组并输出:


#include<cstdio> 
#include<iostream>
using namespace std;
int main(){
char c[5];
gets(c); //从黑窗体读入
puts(c); //在黑窗体输出
return 0;
}


执行结果如下:


C++强化 | 06 一篇文章带你掌握字符数组_转义字符_02


4 转义字符

之前我们讲到,字符一般都是一个字符,也就是输入法中的半角。汉字不是一个字符!


那两个字符组成的,就一定不是字符,只能是字符串吗?


那也不一定,因为在字符中还有一类特殊的字符,叫做转义字符

1 转义字符

一个反斜杠加上一个字符或者几个数字,可以表达更多的含义。即将字符或者数字的含义进行转换。我们称之为转义字符。


转义字符不止有一个字符,而是多个字符占一个字符的位置,表达一个字符的功能


2 常用转义字符

我们比较常见的一些转义字符如下:




字符

含义

\0

空字符

\t

制表符

\n

换行符

\a

响铃

\\

反斜杠“\”

\ddd

1-3位8进制数

\xhh

16进制数


其中我们要着重掌握的为如下这三种:


1、空字符 '\0'


空字符用法很多,在字符数组中,空字符可以用作其结尾。我们定义一个字符数组并赋值后,其后会自动添加一个\0表示字符数组结束。所以,我们定义的字符数组的真实长度要比输入的个数要多1。


2、制表符 '\t'


制表符跟我们电脑上的tab键的功能是一致的,在C++编程中,我们经常使用制表符来规范我们的输出,对齐各个列,使得输出格式更加整齐。


3、换行符 '\n'


换行符和endl表达的功能是一致的,我们也可以使用 '\n' 来进行输出的换行。举例如下:


cout<<"hello world\n";


5 习题

编写一个字母个数统计程序。要求:从键盘输入一段英文句子,输出指定字符的个数和英文字母(包括大小写)的个数。


【输入示例】


My name is Nana, I love China.
a


【输出示例】


4
22



​ ​ ​ ​ ​


AI与区块链技术

C++强化 | 06 一篇文章带你掌握字符数组_字符数组_03


标签:总结,字符,06,C++,转义字符,数组,类型
From: https://blog.51cto.com/u_12001271/5969351

相关文章

  • 力扣459 重复的字符串
    题目:给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例:输入:s="abab"输出:true解释:可由子串"ab"重复两次构成。输入:s="a......
  • 字符串相减
    现在有两个字符串S1和S2,他定义了一种字符串减法,S1-S2即在S1中去除掉所有S2中的字符所剩下的字符串。举例:S1="ABA",S2="A",则S1-S2="B"。输入输入包含多组测试用......
  • JS中 atob 方法解码中文字符乱码问题
    //中文base64编码functionutf8_to_b64(str){returnwindow.btoa(unescape(encodeURIComponent(str)));}//中文base64解码functionb64_to_utf8(str){......
  • 通过快捷键给相同的字符标记成彩色的颜色:multihighlight
      我真的超级喜欢这个插件,我快捷键是command+'单引号符号。按一下就把相同的字符标记为同一种颜色,非常方便重点阅读代码。支持用很多颜色标记很多字符。再按一下就......
  • 盘点Python 中字符串的常用操作
    摘要:盘点Python中字符串的几个常用操作,对新手极度的友好。本文分享自华为云社区《​​盘点Python中字符串的常用操作,对新手极度友好​​》,作者:TT-千叶。在Python中字......
  • 盘点Python 中字符串的常用操作
    摘要:盘点Python中字符串的几个常用操作,对新手极度的友好。本文分享自华为云社区《盘点Python中字符串的常用操作,对新手极度友好》,作者:TT-千叶。在Python中字符串......
  • c++开机自动启动程序
    为了让程序开机自动启动,找了一些网上资料终于实现。voidHKRunator(){charprogramName[MAX_PATH]={0};DWORDdwRet=GetModuleFileName(NULL,(LPSTR)p......
  • python re.error: unterminated character set at position提示:字符串中包含[]{}()替
    re.error:unterminatedcharactersetatposition12这很可能是因为元字符“{}、[]、()”。有没有什么正则表达式可以让finditer忽略它?您必须转义正则表达式中的特殊......
  • 统计同构子字符串的数目
    题目给你一个字符串s,返回s中同构子字符串的数目。由于答案可能很大,只需返回对109+7取余后的结果。同构字符串的定义为:如果一个字符串中的所有字符都相同,那么......
  • CMU15-445:Lecture #06 笔记
    Lecture#6:BufferPools本文是对CMU15-445课程第5节笔记的一个粗略总结和翻译。仅供个人(M1kanN)复习使用。1.IntroductionDBMS的任务是管理内存和从磁盘移入移......