C++基础22 字符串与字符数组及其相关操作

这是《C++算法宝典》C++基础篇的第22节文章啦~

如果你之前没有太多C++基础,请点击👉C++基础,如果你C++语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏:数据结构啦

目录

📕什么是字符类型?

🖊训练:打印字母表

🖊打印字母表参考代码

📕字符串定义与初始化

📕字符串与字符的区别

🖊训练:输出两个单词

🖊输出两个单词参考代码

📕字符数组的概念

📕字符数组的定义

📕字符数组的赋值

📕字符串常用函数

🧠①gets函数

🧠②strlen函数

🖊训练:统计数字个数

🖊统计数字个数解析

🖊统计数字个数主体代码


什么是字符类型?

字符类型为由一个字符组成的字符常量或字符变量。

字符变量定义:

char 字符变量;

字符类型是一个有序类型, 字符的大小顺序按其ASCⅡ代码的大小而定。

训练:打印字母表

按字母表顺序和逆序每隔一个字母打印。

【输出描述】输出26个字母,从a开始隔一个字母打印下一个字母,如,a打印之后打印c,一直到最后一个字母,再逆序输出下一个字母,每两个字母之间空一个格

【样例输出】

a  c  e  g  i  k  m  o  q  s  u  w  y z  x  r  v  t  p  n  l  j  h  f  d  b

打印字母表参考代码

#include<iostream>
using namespace std;
int main()
{
    for (char i='a';i<='z';i+=2)
    cout<<" "<<i;
    cout<<endl;
    for (char i='z'; i>='a'; i-=2)
        cout<<" "<<i;
    return 0;
}

字符串定义与初始化

主要有以下两种定义方式:

  string s1;  //定义一个字符串变量s1

  string s2 = "Hello world!";  //定义s2并初始化为字符串常"Hello world!"

字符串与字符的区别

注意:\0的ACSII码为0

训练:输出两个单词

输入两个单词,用空格隔开,然后分两行分别输出这两个单词

【输入描述】两个英文单词并用空格隔开

【输出描述】输入的两个单词换行输出

【样例输入】

dream maker

【样例输出】

dream
maker

输出两个单词参考代码

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    cout<<s1<<endl<<s2;
    return 0;
}

字符数组的概念

字符数组是指元素为字符的数组。

字符数组是用来存放字符序列或字符串的。

字符数组也有一维和二维之分。

字符数组的定义

字符数组定义格式同于一般数组,所不同的是数组类型是字符型,第一个元素同样是从ch1[0]开始,而不是ch1[1]。具体格式如下:

[存储类型] char 数组名[常量表达式1]…

例如:

char ch1[5]; //数组ch1是一个具有5个字符元素的一维字符数组

char ch2[3][5]; //数组ch2是一个具有15个字符元素的二维字符数组

字符数组的赋值

字符数组赋值类似于一维数组,赋值分为数组的初始化和数组元素的赋值。初始化的方式有用字符初始化和用字符串初始化两种,也有用初始值表进行初始化的。

①用字符初始化数组

例如:

char chr1[5]={'a','b','c','d','e'};

说明:初始值表中的每个数据项是一个字符,用字符给数组chr1的各个元素初始化。

②用字符串初始化数组

例如:

char chr2[5]="abcd";

说明:字符串的长度应小于字符数组的大小。

③数组元素赋值例如:

char chr[3];
chr[0]='a';chr[1]='b';chr[2]='c';

字符串常用函数

①gets函数

格式:gets(字符串名称)

说明:使用gets只能输入一个字符串,从光标读到换行符为止。

例如:gets(s1);输入“Hello World”,以换行结束,s1获取的结果是Hello World。

②strlen函数

说明:求字符串的长度,如a=strlen(a),求字符串a的长度

训练:统计数字个数

输入一行字符,统计出其中数字字符的个数。

【输入描述】一行字符串,总长度不超过255。

【输出描述】输出为1行,输出字符串里面数字字符的个数。

【样例输入】

Peking University is set up at 1898.

【样例输出】

4

统计数字个数解析

1.使用字符串引入cstring头文件,即:

#include <cstring>

2.输入字符串使用gets函数,若字符串名称为s,则:

gets(s)

3.想要求统计数字字符的个数,需要遍历字符串,即:

for(i=0;i<len;i++)
{
    if(s[i]>='0'&&s[i]<='9')
    n++;   //n表示数字字符的数量
}

统计数字个数主体代码

int n=0,i,len=0;
char s[256];
gets(s);
len=strlen(s);
for(i=0;i<len;i++)
{
   if(s[i]>='0'&&s[i]<='9')
   n++;
}
cout << n;

从入门到算法,再到数据结构,查看全部文章请点击此处​​​​​icon-default.png?t=N7T8http://www.bigbigli.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/775270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++重定向输出和输出(竞赛讲解)

1.命令行重定向 在命令行中指定输出文件 指令 .\重定向学习.exe > 1.txt 效果 命令行输入和输出 指令 .\重定向学习.exe < 2.txt > 1.txt 效果 代码 #include<bits/stdc++.h> using namespace std; int n; int main(){cin>>n;for(int i=0;i<n;i…

4、SSD主控

简述 主控是个片上系统&#xff0c;由硬件和固件组成一个功能完整的系统&#xff1b;上文所述的FTL就属于主控的固件范畴。主控闪存构成了整个SSD&#xff0c;在闪存确定的情况下&#xff0c;主控就反映了各家SSD的差异。实时上各家SSD的差异也主要反应在主控上&#xff0c;毕…

VMware虚拟机Ubuntu网络有线线缆已拔出问题

1、问题描述 VMware虚拟机Ubuntu不能联网&#xff0c;打开设置中&#xff0c;网络显示“有线 线缆已拔出”。 2、查看虚拟网络连接 查看主机的网络连接&#xff0c;确保虚拟网络已启用。 3、启动虚拟机网络服务 打开主机的 ‘服务’&#xff08;winr&#xff0c;运行框中输入…

46.修复HOOK对代码造成的破坏

上一个内容&#xff1a;45.使用hook点链表实现指定跳转 以 45.使用hook点链表实现指定跳转 它的代码为基础进行修改 此代码已实现无敌与秒杀功能 HOOKPOINT.h文件里的修改 #pragma oncetypedef struct CPUINFO {unsigned eflags;unsigned edi;unsigned esi;unsigned ebp;un…

PCL从理解到应用【03】KDTree 原理分析 | 案例分析 | 代码实现

前言 本文分析KDTree的原理&#xff0c;集合案例深入理解&#xff0c;同时提供源代码。 三个案例&#xff1a;K近邻搜索、半径内近邻搜索、近似最近邻搜索。方法对比&#xff0c;如下表所示&#xff1a; 特性K近邻搜索半径内近邻搜索近似最近邻搜索描述查找K个最近邻点查找指…

Linux系统(CentOS)安装Mysql5.7.x

安装准备&#xff1a; Linux系统(CentOS)添加防火墙、iptables的安装和配置 请访问地址&#xff1a;https://blog.csdn.net/esqabc/article/details/140209894 1&#xff0c;下载mysql安装文件&#xff08;mysql-5.7.44为例&#xff09; 选择Linux通用版本64位&#xff08;L…

[深度学习]卷积理解

单通道卷积 看这个的可视化就很好理解了 https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md 多通道卷积 当输入有多个通道时,卷积核需要拥有相同的通道数. 假设输入有c个通道,那么卷积核的每个通道分别于相应的输入数据通道进行卷积,然后将得到的特征图对…

说明本文档目录是软件开发梳理需求常见问题QA文档,方便客户看,也方便我们的售前人员,需求分析人员,ui设计师,原型绘图人员,思维导图绘图人员查看。

https://doc.youyacao.com/117/2150 说明 本文档目录是软件开发梳理需求常见问题QA文档&#xff0c;方便客户看&#xff0c;也方便我们的售前人员&#xff0c;需求分析人员&#xff0c;ui设计师&#xff0c;原型绘图人员&#xff0c;思维导图绘图人员查看。 提示 本内容客户…

【ABB】控制器语言切换

【ABB】控制器语言切换 操作流程演示 操作流程 点击【菜单】点击【Control Panel】点击【Language】点击【Chinese】点击【OK】此时会弹出弹窗&#xff0c;点击【YES】此时控制器会重启&#xff0c;重启完成就是中文了 演示 点击【菜单】 点击【Control Panel】 点击【Langua…

4.2 投影

一、投影和投影矩阵 我们以下面两个问题开始&#xff0c;问题一是为了展示投影是很容易视觉化的&#xff0c;问题二是关于 “投影矩阵”&#xff08;projection matrices&#xff09;—— 对称矩阵且 P 2 P P^2P P2P。 b \boldsymbol b b 的投影是 P b P\boldsymbol b Pb。…

涂山璟无缘奥运会

“涂山璟无缘奥运会”在那片被浪漫与幻想包裹的剧集世界里&#xff0c;涂山璟与小夭的故事&#xff0c;如同夏日里的一缕清风&#xff0c;温柔而又坚定。当爱情以纯粹的形式展现&#xff0c;一个简单的愿望——亲手摘取湖中的海棠花&#xff0c;便成为了两人情感交流的甜蜜桥梁…

吉洪诺夫正则化随笔

前言 前几天在回顾压缩感知中的特征选择与LASSO回归发现了这个Tikhonov regularization&#xff0c;查了一下叫个如题的名字。先来浅说一下正则化这玩意&#xff1a;正则化&#xff08;Regularization&#xff09;是一种用来防止模型过拟合&#xff08;Overfitting&#xff09…

【数据库了解与学习】

1.下载所需版本安装包 1.1将所需文件压缩包以及安装包放在你选择的任意一盘&#xff0c;新建一个没有文字和空格的文件夹 1.2双击打开安装包&#xff0c;选择Custom自定义模式然后点击右下方的Next 1.4三连点击1&#xff0c;再点击箭头出现3&#xff0c;选中3出现4&#xff0c;…

AJAX-day1:

注&#xff1a;文件布局&#xff1a; 一、AJAX的概念&#xff1a; AJAX是浏览器与服务器进行数据通信的技术 >把数据变活 二、AJAX的使用&#xff1a; 使用axios库&#xff0c;与服务器进行数据通信 基于XMLHttpRequest封装&#xff0c;代码简单 Vue,React项目使用 学习…

day04-matplotlib入门

matplotlib Matplotlib 提供了一个套面向绘图对象编程的 API接口 是一款用于数据可视化的 Python 软件包&#xff0c;支持跨平台运行 它能够根据 NumPyndarray 数组来绘制 2D(3D) 图像&#xff0c;它使用简单、代码清晰易懂&#xff0c;深受广大技术爱好 者喜爱。 实列&…

云计算渲染时代:选择Blender或KeyShot进行高效渲染

在云渲染技术日益成熟的背景下&#xff0c;挑选一款贴合项目需求的3D渲染软件显得尤为关键。当前&#xff0c;Blender与KeyShot作为业界领先的全能渲染解决方案&#xff0c;广受推崇。它们虽皆能创造出令人信服的逼真视觉效果&#xff0c;但在特色功能上各有所长。本篇文章旨在…

加装德国进口高精度主轴 智能手机壳「高质量高效率」钻孔铣槽

在当前高度智能化的社会背景下&#xff0c;智能手机早已成为人们生活、工作的必备品&#xff0c;智能手机壳作市场需求量巨大。智能手机壳的加工过程涉及多个环节&#xff0c;包括钻孔和铣槽等。钻孔要求精度高、孔位准确&#xff0c;而铣槽则需要保证槽位规整、深度适宜。这些…

利用C语言实现三子棋游戏

文章目录 1.游戏界面2.游戏内容2.1 棋盘类型2.2棋盘的初始化2.3 打印棋盘的界面展示 3.游戏操作3.1 玩家操作3.2 电脑操作3.3 胜负判定 4.代码整合 1.游戏界面 无论写任何程序&#xff0c;我们都需要先去了解它的大概框架&#xff0c;这里我们先把它的初始界面写出来。一个游戏…

自动化设备上位机设计 二

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();timer1.Enabled true;timer1.Tick Timer1_Tick;}private void Timer1_Tick(object? sender, EventArgs e)…

「媒体邀约」天津媒体资源?媒体邀约宣传报道

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 天津拥有丰富的媒体资源&#xff0c;利用这些资源进行有效…