内容正文:
学科竞赛编程
教研研究院
C++
NOIP
NOI
IOI
1
读一读 写一写
字符数组
字符型数组定义: char a[5]; 表示定义字符型数组a,有a[0]-a[4] 5个可用的空间
字符型数组初始化: char a[5]={‘a’,’b’,’c’,’d’,’e’};
字符数组是存储字符型数据的数组。
字符串
用双引号括起来的0个或多个字符组成的序列,比如:
1. 字符串常量的定义:
2. 字符串结尾的标志:
在内存中存储的形式,以‘\0’结束,例如,将字符串hellow存储到数组中:
3. 字符串的定义和初始化:
4.字符串的输入
(1)不含空格的输入
使用for循环输入
cin>>数组名;
(2)含空格的输入
gets(数组名);
5.字符串的输出
使用for循环输出
cout<<数组名;
输入自己的基本信息试一下吧!
输入你的姓名,性别,年龄和成绩,并输出确认一下吧
puts(数组名);
案例1 输入一个字符串(可包含空格)统计组成字符串各类型的个数,并输出所有特殊字符。
[样例输入]
abSD F12¥#% v
[样例输出]
¥ # %
大写:3
小写:3
数字:2
空格:2
案例1 分析
第一步:定义字符数组存放字符串,定义四个变量分别来统计大写 ,小写,数字和空格四种类型的个数,并输入字符串。
char a[20];
int d=0,x=0,s=0,k=0,i=0;
gets(a);
第二步:在组成字符不为结尾标志\0的情况下进行循环判断,每个字符属于是什么类型,
则该类型统计+1
while(a[i]!='\0')
{
if(a[i]>='A' && a[i]<='Z') d++;
else if(a[i]>='a' && a[i]<='z') x++;
else if(a[i]>='0' && a[i]<='9') s++;
else if(a[i]==' ') k++;
else cout<<a[i]<<" ";
i++;
}
第三步: 输出各类型的个数
cout<<"大写:"<<d<<endl<<"小写:"<<x<<endl<<"数字:"<<s<<endl<<"空格:"<<k;
案例1 完整代码
#include<iostream>
using namespace std;
int main()
{
char a[20];
int d=0,x=0,s=0,k=0,i=0;
gets(a);
while(a[i]!='\0')
{
if(a[i]>='A' && a[i]<='Z') d++;
else if(a[i]>='a' && a[i]<='z') x++;
else if(a[i]>='0' && a[i]<='9') s++;
else if(a[i]==' ') k++;
else cout<<a[i]<<" ";
i++;
}
cout<<"大写:"<<d<<endl<<"小写:"<<x<<endl<<"数字:"<<s<<endl<<"空格:"<<k;
return 0;
}
字符串专用的处理函数
1. strlen() 函数
【作用】用于计算字符串的长度(不含\0)
【格式】strlen(字符数组名);
案例: 输入一串内容(长度不超过108 ),反向输出。
[样例输入]12345
[样例输出]54321
案例分析:
第一步:定义一个字符型数组a ,用来存储输入的字符串,声明两个整型变暈n和i,分别表示字符串的长度和循环变量,输入字符串,存储到字符型数组a当中;
char a[101];
int n,i;c
in >> a;
第二步:使用strlen( )求出字符串的长度,赋值给n ,注意使用strlen( )函数需要在程序开头
包含头文件#include<cstring>;
n=strlen(a);
第三步:使用for循环从数组a中最后-个元素开始,遍历数组中所有的元素,依次输出。
for(i=n-1; i>=0; i--)
{
cout << a[i];
}
2.strcat( )函数
【作用】将b字符串连接到a字符串的后面 (因此a字符串要足够大)
【格式】strcat(a, b)
【用法】
#include <iostream>
#include <cstring>
using