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

什么是字符类型?

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

字符变量定义:

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;