这是《C++算法宝典》C++基础篇的第22节文章啦~
如果你之前没有太多C++基础,请点击👉C++基础,如果你C++语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏:数据结构啦
目录
什么是字符类型?
字符类型为由一个字符组成的字符常量或字符变量。
字符变量定义:
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;