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;  //定义一个字符串变量s1string 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.mzph.cn/pingmian/41447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙传输技术的演进与发展

蓝牙模块技术&#xff0c;作为无线通信领域的重要一员&#xff0c;自其诞生之初便受到了广泛的关注和应用。随着技术的不断发展和演进&#xff0c;蓝牙模块技术已经从最初的单一功能、有限传输速度发展到现在的多功能、高速率、低功耗&#xff0c;为人们的生活和工作带来了极大…

信创-系统架构师认证

随着国家对信息技术自主创新的战略重视程度不断提升&#xff0c;信创产业迎来前所未有的发展机遇。未来几年内&#xff0c;信创产业将呈现市场规模扩大、技术创新加速、产业链完善和国产化替代加速的趋势。信创人才培养对于推动产业发展具有重要意义。应加强高校教育、建立人才…

NXP i.MX8系列平台开发讲解 - 3.18 Linux tty子系统介绍(一)

专栏文章目录传送门&#xff1a;返回专栏目录 Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 1. TTY 起源 2. Linux 系统中的TTY 2.1 Linux TTY 设备形式 2.2 Linux TTY framework 2.3 驱动核心相关文件…

零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!

这段老挝文字翻译成中文是什么意思&#xff1f;有什么好用的老挝语翻译工具推荐吗&#xff1f; 快速翻译&#xff1a;中老语言无缝转换&#xff0c;实时翻译&#xff0c;让沟通更流畅。 学习工具&#xff1a;零基础入门到流利对话&#xff0c;老挝语真人发音&#xff0c;让你的…

MaxKB开源知识库问答系统发布v1.3.0版本,新增强大的工作流引擎

2024年4月12日&#xff0c;1Panel开源项目组正式发布官方开源子项目——MaxKB开源知识库问答系统&#xff08;github.com/1Panel-dev/MaxKB&#xff09;。MaxKB开源项目发布后迅速获得了社区用户的认可&#xff0c;成功登顶GitHub Trending趋势榜主榜。 截至2024年7月4日&…

docker仓库--centos7.9部署harbor详细过程与使用以及常见问题

文章目录 前言1.docker-compose是什么2.harbor是什么 centos7部署harbor详细过程与使用环境一、部署docker二、部署harbor1.下载docker-compose工具2.harbor安装3.拷贝样本文件&#xff0c;并修改文件4.安装harbor&#xff0c;安装完成自行启动5.查看 三、harbor的使用1.创建项…

Https网站如何申请免费的SSL证书及操作使用指南

前言 在当今互联网环境下&#xff0c;HTTPS已成为网站安全的标配&#xff0c;它通过SSL/TLS协议为网站数据传输提供加密&#xff0c;保障用户信息的安全。申请并部署免费SSL证书&#xff0c;不仅能够提升网站的专业形象&#xff0c;还能增强用户信任。本文将详细介绍如何在知名…

StreamSets: 数据采集工具详解

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

Golang语法规范和风格指南(一)——简单指南

1. 前引 一个语言的规范的学习是重要的&#xff0c;直接关系到你的代码是否易于维护和理解&#xff0c;同时学习好对应的语言规范可以在前期学习阶段有效规避该语言语法和未知编程风格的冲突。 这里是 Google 提供的规范&#xff0c;有助于大家在开始学习阶段对 Golang 进行一…

Tensorflow入门实战 T07-Vgg16网络进行咖啡豆识别

本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 1、 前言 这周学习的主要内容是&#xff0c;使用tensorflow编写代码&#xff0c;使用vgg-16网络模型&#xff0c;完成咖啡豆的识别。 2、完整代码 imp…

【密码学基础】对随机不经意传输(Random Oblivious Transfer)的理解

ROT在offline阶段生成大量的OT对&#xff0c;在online阶段通过one-pad方式高效加密&#xff0c;并且只需要简单的异或运算就能实现OT过程&#xff08;去随机化&#xff09;。 在ROT中&#xff0c;有一个关键点是&#xff1a;需要考虑offline阶段的选择比特和online阶段的选择比…

C++ 视觉开发 六.特征值匹配

以图片识别匹配的案例来分析特征值检测与匹配方法。 目录 一.感知哈希算法(Perceptual Hash Algorithm) 二.特征值检测步骤 1.减小尺寸 2.简化色彩 3.计算像素点均值 4.构造感知哈希位信息 5.构造一维感知哈希值 三.实现程序 1.感知哈希值计算函数 2.计算距离函数 3…

vscode 生成项目目录结构 directory-tree 实用教程

1. 安装插件 directory-tree 有中文介绍&#xff0c;极其友好&#xff01; 2. 用 vscode 打开目标项目 3. 快捷键 Ctrl Shift p&#xff0c;输入 Directory Tree 后回车 会在 README.md 文件的底部生成项目目录&#xff08;若项目中没有 README.md 文件&#xff0c;则会自动创…

用NanoID换掉 UUID,好处是?【送源码】

当我们在分布式环境中存储一些数据的时候&#xff0c;不得不面对的一个选择&#xff0c;就是ID生成器。 使用一个唯一的字符串&#xff0c;来标识一条完整的记录。 这时候&#xff0c;不能使用md5或者sha1来对整个记录做摘要&#xff0c;因为我们后续还要改动这个记录。也不能…

【C++】日期类

鼠鼠实现了一个日期类&#xff0c;用来练习印证前几篇博客介绍的内容&#xff01;&#xff01; 目录 1.日期类的定义 2.得到某年某月的天数 3.检查日期是否合法 4.&#xff08;全缺省&#xff09;构造函数 5.拷贝构造函数 6.析构函数 7.赋值运算符重载 8.>运算符重…

高效PD,稳定传输,LDR6023CQ芯片,打造顶级直播体验

在当今市场&#xff0c;一款备受瞩目的直播神器——无线领夹麦克风&#xff08;MIC&#xff09;&#xff0c;正风靡于网红直播、在线教育、专业采访、高清视频录制及视频会议等多个领域。麦克风&#xff0c;这一昔日课堂上的常见设备&#xff0c;已随着科技的飞速发展而焕然一新…

数字信号处理及MATLAB仿真(2)——离散系统

上回书说到如何来编写一些简单的离散时间序列&#xff0c;今天咱们就来谈谈一些关于常系数差分方程的操作吧。 说到这里咱们对于常系数差分方程可能最关心的就是怎么去求解了。 其中最关键的部分就是filter函数&#xff0c;可以用来计算系统在输入信号为x的输出信号y。大家学过…

ASUS/华硕枪神5 G533Q G733Q系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;Windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

JAVA--JSON转换工具类

JSON转换工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackso…

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c;毕竟楼主不是做教学的&#xff0c;没有教学经验。 关于redis的介绍请自行搜索查阅。 使用redis数据…