【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)

系列文章目录

身躯已然冰封,灵魂仍旧火热
本文由@睡觉待开机原创,未经允许不得转载。
本内容在csdn网站首发
欢迎各位点赞—评论—收藏
如果存在不足之处请评论留言,共同进步!


文章目录

  • 系列文章目录
  • 前言
  • 题目链接(有需要请自行链接做题)
  • T1:
    • 题目解析:
    • 思路1:
    • 思路2:
    • 思路3:
  • T2:
    • 思路1:
    • 思路2:
  • T3:
    • 思路1:
  • T4:
    • 思路1:
  • T5:
    • 思路1:
  • T6:
    • 思路1:
    • 思路2:
  • T7:
    • 思路1:
    • 思路2:
    • 思路3:
  • T8:
    • 思路1:
    • 思路2:
  • T9:
    • 思路1:
    • 思路2:
    • 思路3:
  • 所有代码展示:
  • 总结:


前言

注:本文题目是作者听课视频讲解,来自比特鹏哥C语言刷题训练营,有些许代码思路借鉴。
在本节博客当中,题目难度有了一点点提升,然后就是更注重一些题目的多解性了,仔细对比不同的代码和思路解法,就能促进自己对代码的理解和掌握。


题目链接(有需要请自行链接做题)

第5讲

  1. 精选社⻓ 题号:BC147 链接:https://www.nowcoder.com/practic
    e/45a30e3ef51040ed8a7674984d6d1553?tpId=290&tqId=39935&ru=/exam/oj
  2. 你是天才吗 题号:BC50 链接:https://www.nowcoder.com/practic
    e/557cc54704bb4d56b73b62d1a5455331?tpId=290&tqId=39838&ru=/exam/oj
  3. 完美成绩 题号:(⽆) 链接:https://www.nowcoder.com/questionTe
    rminal/8312e497509a450f968d9a6a2381ce32
  4. 及格分数 题号:BC51 链接:https://www.nowcoder.com/practice/
    56513524333148b38945e1989bc7df4e?tpId=290&tqId=39839&ru=/exam/oj
  5. 判断整数的奇偶性 题号:BC52 链接:https://www.nowcoder.com/
    practice/a8b018667e274af29b5f76a6673450fc?tpId=290&tqId=39840&ru=/exam/oj
  6. 最⾼分数 题号:(⽆) 链接:https://www.nowcoder.com/questio
    nTerminal/52c18a3b49a54fc98107fbdde1415f90
  7. 判断元⾳还是辅⾳ 40题号:BC53 链接:https://www.nowcoder.com/p
    ractice/7eb4df4d52c44d309081509cf52ecbc4?tpId=290&tqId=39841&ru=/exam/oj
  8. 判断是不是字⺟ 题号:BC60 链接:https://www.nowcoder.com/practice/91a588dd4cd244bfa616f17603ec123c?tpId=290&tqId=39848&ru=/exam/oj
  9. 大小写字母转换 题号:BC48 链接:https://www.nowcoder.com/practice/850ebd30a2a34cfc87199da3fc15786a?tpId=107&&tqId=33329&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

T1:

在这里插入图片描述

题目解析:

看着挺高大上,还是竞选社长,其实说白了就是给一串字符串,然后这个字符串里有A有B,该字符串以0为结束标志,让你数一数哪个多罢了。

思路1:

创建一个数组,存储一下字符串,然后用数组+循环进行挨个访问,挨个计数就行了
代码实现:

void T1_way1(void)
{//创建一个数组,读入并存储字符串char str[100] = { 0 };scanf("%s", str);//一般scanf需要给一个地址,这里数组名就是数组首元素地址//循环依次访问,直到遇到0或者EOFint i = 0;int count_a = 0;int count_b = 0;while (str[i] != '0' && str[i] != EOF){if (str[i] == 'A')count_a++;if (str[i] == 'B')count_b++;i++;}//按照情况来打印if (count_a > count_b)printf("A\n");else if (count_a < count_b)printf("B\n");elseprintf("E\n");
}

思路2:

其实计数这个地方可以升级一下哈,咱有俩计数的变量,有点多,其实一个就够了,数个A计数+1,数个B-计数就1,这样的话是比较不错的。
然后代码就变成这样了:

void T1_way2(void)
{//创建一个数组,读入并存储字符串char str[100] = { 0 };scanf("%s", str);//一般scanf需要给一个地址,这里数组名就是数组首元素地址//循环依次访问,直到遇到0或者EOFint i = 0;int count = 0;while (str[i] != '0' && str[i] != EOF){if (str[i] == 'A')count++;if (str[i] == 'B')count--;i++;}//按照情况来打印if (count > 0)printf("A\n");else if (count < 0)printf("B\n");elseprintf("E\n");
}

思路3:

感觉我们得把一个字符串需要存起来,存起来的话,是不是有点浪费空间,我们到最后又不需要这个数组里的值,,,只是看看A多还是B多而已。。。要不我干脆补存储字符串了,一边读,一边计数不就得了

void T1_way3(void)
{//一边读一边计数,循环依次访问,直到遇到0或者EOFchar ch = '0';int count = 0;while (ch = getchar() != '0'&& ch != EOF){if (ch == 'A')count++;if (ch == 'B')count--;}//按照情况来打印if (count > 0)printf("A\n");else if (count < 0)printf("B\n");elseprintf("E\n");
}

这样的话其实没了数组计数变量也被我们搞成一个了,所以说应该是代码效率提升了不少哈哈,所以这种简单题目可以试试能不能我们把他的这个效率还有需要的内存给他搞得好一点。。。注意细节得。

T2:

在这里插入图片描述
题意:这个题也是一个超级简单的题目,说白了就是编一个程序,这个程序是这样滴:搞一个比较值,一个数字大于等于这个比较值,就是天才,小于就不是。

思路1:

直接搞俩变量,一个是存储这个比较值另一个输入值就行了

void T2_way1(void)
{int a = 140;int iq = 0;while(scanf("%d", &iq)!=EOF){if (iq >= a)printf("Genius\n");}
}

思路2:

其实这个多组输入还可以换一种写法:

void T2_way2(void)
{int a = 140;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Genius\n");}
}

可以自己稍微考量一下为啥这个多组输入还可以这么写哈,不会的私信我,我给你说哈。
然后这个题目就没啥好说的了吧,毕竟太简单了,没有可以改进的地方啊。。。

T3:

在这里插入图片描述
额,其实这个题目跟上一个一样的,就是改了改那个比较数字而已。。。

思路1:

代码我就直接copy上一个的代码了,没事可以自己再试一下。。。

void T3_way1(void)
{int a = 90;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Perfect\n");}
}

T4:

在这里插入图片描述
题目解析:跟前面俩题一样的,不多废话了。。。感觉这三个题目选的有点划水的感觉。。。

思路1:

void T4_way1(void)
{int a = 60;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Pass\n");elseprintf("Fail\n");}
}

T5:

在这里插入图片描述
题目解析:
就是你搞个数字进去,让程序看看是偶数还是奇数。。。用%操作就行了。

思路1:

void T5_way1(void)
{int num = 0;while (scanf("%d", &num) != EOF){if (num % 2 == 0)printf("Even\n");elseprintf("Odd\n");}
}

T6:

在这里插入图片描述
题目解析:就是输入三个数字,程序输出其中的最大的数字。
额。。。这个题目的话很多人可能想到了类似于打擂台的那种方式。。。其实这种三个比较量的时候,可以用三目操作符搞一下。

思路1:

三目操作符的使用,主要就是复习一下,省的忘干净C语言还有这个东西,这东西用起来其实相当好用的,不过很多人想不到而已。

void T6_way1(void)
{int a, b, c;while (~scanf("%d %d %d", &a, &b, &c)){int max = a > b ? a : b;max = max > c ? max : c;printf("%d\n", max);}}

思路2:

就是平常那种打擂台的方式,或者再加上数组高级一点。

void T6_way2(void)
{int n1 = 0;int n2 = 0;int n3 = 0;int max = 0;while (scanf("%d %d %d",&n1,&n2,&n3) != EOF){max = n1;if (n2 > max)max = n2;if (n3 > max)max = n3;printf("%d\n", max);}}

T7:

在这里插入图片描述
题目分析:就是输入一个字母看看是元音还是辅音。。。

思路1:

void T7_way1(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf("%c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == str[i]){printf("Vowel\n");break;}}getchar();if (i == 10)printf("Consonant\n");}
}

这里得说一下哈,scanf输入字符时候,我们按回车也算一个字符,为了把那个回车给“吃掉”,所以就有搞了个getchar()函数。。。

思路2:

然后那个回车问题的话,其实在scanf%c前面加个空格也可以解决哈,就是也可以不用特地加一个getchar()来“吃掉”多余的回车。。。

void T7_way2(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf(" %c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == str[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}
}

思路3:

void T7_way3(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf(" %c", &ch) != EOF){if (strchr(str,ch)){printf("Vowel\n");}elseprintf("Consonant\n");}
}

然后这里简单提及一下strchr函数吧,就是一个库函数,这个库函数是用来判断一个字符是否在某个数组当中。。。有的话就返回非0,没有的话返回0。。。

T8:

在这里插入图片描述

思路1:

直接用库函数判断
头文件:#include<string.h>

void T8_way1(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (isalpha(ch))printf("%c is an alphabet.\n",ch);elseprintf("%c is not an alphabet.\n",ch);}
}

思路2:

oid T8_way2(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (('a'<= ch && ch <= 'z') ||('A' <= ch && ch <= 'Z'))printf("%c is an alphabet.\n",ch);elseprintf("%c is not an alphabet.\n",ch);}
}

T9:

在这里插入图片描述

思路1:

void T9_way1(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if ('a' <= ch && ch <= 'z')printf("%c", ch-32);else if('A' <= ch && ch <= 'Z')printf("%c\n", ch+32);}
}

思路2:

利用库函数
islower,isupper
头文件:#include<ctype.h>

void T9_way2(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (islower(ch))printf("%c", ch - 32);else if (isupper(ch))printf("%c\n", ch + 32);}
}

思路3:

还有库函数tolower,toupper

void T9_way3(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (islower(ch))printf("%c", toupper(ch));else if (isupper(ch))printf("%c\n", tolower(ch));}
}

所有代码展示:

#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<ctype.h>void T1_way1(void)
{//创建一个数组,读入并存储字符串char str[100] = { 0 };scanf("%s", str);//一般scanf需要给一个地址,这里数组名就是数组首元素地址//循环依次访问,直到遇到0或者EOFint i = 0;int count_a = 0;int count_b = 0;while (str[i] != '0' && str[i] != EOF){if (str[i] == 'A')count_a++;if (str[i] == 'B')count_b++;i++;}//按照情况来打印if (count_a > count_b)printf("A\n");else if (count_a < count_b)printf("B\n");elseprintf("E\n");
}void T1_way2(void)
{//创建一个数组,读入并存储字符串char str[100] = { 0 };scanf("%s", str);//一般scanf需要给一个地址,这里数组名就是数组首元素地址//循环依次访问,直到遇到0或者EOFint i = 0;int count = 0;while (str[i] != '0' && str[i] != EOF){if (str[i] == 'A')count++;if (str[i] == 'B')count--;i++;}//按照情况来打印if (count > 0)printf("A\n");else if (count < 0)printf("B\n");elseprintf("E\n");
}void T1_way3(void)
{//一边读一边计数,循环依次访问,直到遇到0或者EOFchar ch = '0';int count = 0;while (ch = getchar() != '0' && ch != EOF){if (ch == 'A')count++;if (ch == 'B')count--;}//按照情况来打印if (count > 0)printf("A\n");else if (count < 0)printf("B\n");elseprintf("E\n");
}void T2_way1(void)
{int a = 140;int iq = 0;while (scanf("%d", &iq) != EOF){if (iq >= a)printf("Genius\n");}
}void T2_way2(void)
{int a = 140;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Genius\n");}
}void T3_way1(void)
{int a = 90;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Perfect\n");}
}void T4_way1(void)
{int a = 60;int iq = 0;while (~scanf("%d", &iq)){if (iq >= a)printf("Pass\n");elseprintf("Fail\n");}
}void T5_way1(void)
{int num = 0;while (scanf("%d", &num) != EOF){if (num % 2 == 0)printf("Even\n");elseprintf("Odd\n");}
}void T6_way1(void)
{int a, b, c;while (~scanf("%d %d %d", &a, &b, &c)){int max = a > b ? a : b;max = max > c ? max : c;printf("%d\n", max);}}void T6_way2(void)
{int n1 = 0;int n2 = 0;int n3 = 0;int max = 0;while (scanf("%d %d %d", &n1, &n2, &n3) != EOF){max = n1;if (n2 > max)max = n2;if (n3 > max)max = n3;printf("%d\n", max);}}void T7_way1(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf("%c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == str[i]){printf("Vowel\n");break;}}getchar();if (i == 10)printf("Consonant\n");}
}void T7_way2(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf(" %c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == str[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}
}void T7_way3(void)
{char str[] = "AEIOUaeiou";char ch = 0;while (scanf(" %c", &ch) != EOF){if (strchr(str, ch)){printf("Vowel\n");}elseprintf("Consonant\n");}
}void test(void)
{char str[] = "AEIOUaeiou";char ch = 0;scanf("%c", &ch);int c = strchr(str, ch);printf("%d", c);
}void T8_way1(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (isalpha(ch))printf("%c is an alphabet.\n", ch);elseprintf("%c is not an alphabet.\n", ch);}
}void T8_way2(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z'))printf("%c is an alphabet.\n", ch);elseprintf("%c is not an alphabet.\n", ch);}
}void T9_way1(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if ('a' <= ch && ch <= 'z')printf("%c", ch - 32);else if ('A' <= ch && ch <= 'Z')printf("%c\n", ch + 32);}
}void T9_way2(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (islower(ch))printf("%c", ch - 32);else if (isupper(ch))printf("%c\n", ch + 32);}
}void T9_way3(void)
{char ch = 0;while (scanf(" %c", &ch) != EOF){if (islower(ch))printf("%c", toupper(ch));else if (isupper(ch))printf("%c\n", tolower(ch));}
}int main()
{//T1_way1();//T1_way2();//T1_way3();//T2_way1();//T2_way2();//T3_way1();//T4_way1();//T5_way1();//T6_way1();//T6_way2();//T7_way1();//T7_way2();//test();//T8_way1();//T8_way2();//T9_way1();//T9_way2();T9_way3();return 0;
}

总结:

以上就是对鹏哥刷题训练营第五节课所有的代码笔记了~希望同学们还是自己动手敲一下。

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

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

相关文章

阿里云部署k8s with kubesphere

阿里云ESC 创建实例 填入密码即可 云上的防火墙相关设置就是安全组 vpc 专有网络 划分私有ip 子网 vpc 隔离环境域 不同的vpc下 即使相同的子网也不互通 使用交换机继续划分子网 停止 释放 不收钱 k8s 服务器 4核8G*1 8核16G *2 git 创建凭证 pipeline 发邮箱 (p124)…

双指针算法(二)

三数之和 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重…

Linux---Ubuntu软件安装

1. 软件安装的介绍 Ubuntu软件安装有两种方式: 离线安装(deb文件格式安装&#xff09;在线安装(apt-get方式安装) 2. deb文件格式安装 是 Ubuntu 的安装包格式&#xff0c;可以使用 dpkg 命令进行软件的安装和卸载。 命令说明dpkg安装和卸载deb安装包 dpkg命令选项: 选项…

数字滤波器设计——Matlab实现数字信号处理<1>

目录 一.实验内容 二.代码分析 1.信号产生部分 2.利用傅立叶级数展开的方法&#xff0c;自由生成所需的x(t) 3.通过选择不同的采样间隔T&#xff08;分别选T>或<1/2fc&#xff09;&#xff0c;从x(t)获得相应的x(n) 3.对获得的不同x(n)分别作傅立叶变换&#xff0c…

2024年高效远程协同运维工具推荐

随着企业的不断发展以及变化&#xff0c;企业的内部IT环境也是日益复杂&#xff0c;一跨高效远程协同运维工具必不可少&#xff0c;不仅可以提高生产力&#xff0c;还能降低运营成本。这里就给大家推荐2024年高效远程协同运维工具。 高效远程协同运维工具应用场景 1、IT运维管…

安卓端出现https请求失败(转)

背景# 某天早上&#xff0c;正在一个会议时&#xff0c;突然好几个同事被叫出去了&#xff1b;后面才知道&#xff0c;是有业务同事反馈到领导那里&#xff0c;我们app里面某个功能异常。 具体是这样&#xff0c;我们安卓版本的app是禁止截屏的&#xff08;应该是app里做了拦…

设计模式(三)-结构型模式(2)-桥接模式

一、为何需要桥接模式&#xff08;Bridge&#xff09;? 在软件设计中&#xff0c;存在有两个或多个不同维度的模块时&#xff0c;我们需要将这些模块使用到在一起&#xff0c;来实现一个完整的功能。所谓不同维度的意思就是这些模块所负责的职责是不同的&#xff0c;并且它们…

lua安装

lua安装 1.Lua介绍 特点&#xff1a;轻量、小巧。C语言开发。开源。 设计的目的&#xff1a;嵌入到应用程序当中&#xff0c;提供灵活的扩展和定制化的功能。 luanginx&#xff0c;luaredis。 2.windows安装lua windows上安装lua&#xff1a; 检查机器上是否有lua C:\U…

Kubernetes 的用法和解析 -- 4

一.Deployment 资源详解 如果Pod出现故障&#xff0c;对应的服务也会挂掉&#xff0c;所以Kubernetes提供了一个Deployment的概念 &#xff0c;目的是让Kubernetes去管理一组Pod的副本&#xff0c;也就是副本集 &#xff0c;这样就能够保证一定数量的副本一直可用&#xff0c;…

概率论复习

第一章&#xff1a;随机概率及其概率 A和B相容就是 AB 空集 全概率公式与贝叶斯公式&#xff1a; 伯努利求概率&#xff1a; 第二章&#xff1a;一维随机变量及其分布&#xff1a; 离散型随机变量求分布律&#xff1a; 利用常规离散性分布求概率&#xff1a; 连续性随机变量…

Windows使用VNC Viewer远程桌面Ubuntu【内网穿透】

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

hypervisor display显卡节点card0生成过程

ditsi 配置 lagvm/LINUX/android/vendor/qcom/proprietary/devicetree/qcom direwolf-g9ph.dts #include "direwolf-vm-la.dtsi" direwolf-vm-la.dtsi #include "display/quin-vm-display-la.dtsi" quin-vm-display-la.dtsi //对应/sys/class/drm/card…

推荐几款值得收藏的3DMAX插件

推荐几款值得收藏的3DMAX插件 StairGenerator StairGenerator一键楼梯插件&#xff0c;不需要花费太多的时间&#xff0c;轻松从2D平面图生成3D楼梯模型&#xff0c;生成的楼梯模型细节丰富真实。 【主要功能】 1.简单&#xff1a;轻松实现2D到3D建模。 2.具有最详细三维结…

高级桌面编程(一)

前言 学习心得&#xff1a;C# 入门经典第8版书中的第15章《高级桌面编程》 创建控件并设置样式 1 样式 Style WPF 当中我们可以对每一个控件进行完全的自定义。我们可以随意更改控件外观和功能。提供我们能完成这样的效果与控件的样式&#xff08;Style&#xff09;有着不可分…

人工智能革命:共同探索AIGC时代的未来

一、引言 随着大数据和强大的计算能力的兴起&#xff0c;人工智能技术&#xff08;AI&#xff09;正在快速发展&#xff0c;并为各个领域带来革命性的变化。人工智能与智能计算技术&#xff08;AIGC&#xff09;的融合不仅为企业、科研机构和普通用户提供了巨大的机遇&#xff…

60.Sentinel源码分析

Sentinel源码分析 1.Sentinel的基本概念 Sentinel实现限流、隔离、降级、熔断等功能&#xff0c;本质要做的就是两件事情&#xff1a; 统计数据&#xff1a;统计某个资源的访问数据&#xff08;QPS、RT等信息&#xff09; 规则判断&#xff1a;判断限流规则、隔离规则、降级规…

数字孪生Web3D智慧机房可视化运维云平台建设方案

前言 进入信息化时代&#xff0c;数字经济发展如火如荼&#xff0c;数据中心作为全行业数智化转型的智慧基座&#xff0c;重要性日益凸显。与此同时&#xff0c;随着东数西算工程落地和新型算力网络体系构建&#xff0c;数据中心建设规模和业务总量不断增长&#xff0c;机房管理…

Xcode 15 Assertion failed: (false “compact unwind compressed function offset doesn‘t fit in 24

xcode 真机运行报错&#xff1a;Assertion failed: (false && "compact unwind compressed function offset doesnt fit in 24 bits"), function operator(), file Layout.cpp, line 5758 如下图&#xff1a; 解决办法&#xff1a; 在 targets-->Build …

力扣---最长回文子串(动态规划)

目录 ​编辑 题目 思路步骤&#xff1a; 代码 我的其他博客 题目 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&…

【C++】标准库中的string类

目录 一、介绍 二、常用接口 1.构造函数和赋值操作 2.string类对象的容量操作 3.string类对象的访问及遍历操作 4.string类对象的修改操作 5.string类非成员函数 放在最后 一、介绍 在C中&#xff0c;std::string 是标准库提供的字符串类。它属于 <string> 头文件…