字符数组与字符串
字符数组与字符串
什么是字符数组
当我们想要向计算机当中存储一句话,或者很多字符的时候,我们就会使用到字符数组
字符数组的定义如下:
char a[100] = {'0'};
与定义普通数组一样,采用 类型 变量名[] 的形式来进行定义,字符数组可以用于存储多个字符,
什么是字符串
用双引号包括起来的中间字符组成的序列叫做字符串
字符串的定义如下:
char n[] = "hello,world";
字符数组和字符串的区别:两者都是使用char来定义,区别在于字符串在存储时在末尾
存在一个'0'的结束标志,这个标志也占据数据的一个实际位置
字符串作为一个特殊的字符数组,可以按照数组元素逐个处理,也可以直接使用cin和cout语句完成输入输出
#include <iostream>
using namespace std;
int main(){
//定义一个空字符串
char a[] = "";
cin >> a ; //字符串输入
cout << a ; //字符串输出
return 0;
}
C风格字符串函数的使用
必须包含头文件<cstring>
名称 | 函数 | 作用 |
---|---|---|
长度 | strlen(s1); | 返回字符串s1的长度(不包含'0') |
复制 | strcpy(s1,s2); | 给s1赋值,值为s2 |
拼接 | strcat(s1,s2); | 在s1的末尾拼接s2 |
比较 | strcmp(s1,s2); | s1 == s2;返回0 s1 < s2;返回负数s1 > s2;返回正数 |
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char s1[20] = "Hello";
char s2[20] = "World";
char s3[20] = "";
cout << "s1的长度为:" << strlen(s1) << endl;
cout << "s2的长度为:" << strlen(s1) << endl;
//将s1复制到s3中
strcpy(s3,s1);
cout << "s3的内容为:" << s3 << endl;
cout << "s2的内容为: " << s2 << endl;
//将s2拼接在s1的末尾
strcat(s1,s2);
cout << "s1的内容为:" << s1 << endl;
return 0;
}
问题
统计字符
输入一个长度不超过100且不包含空格的字符串,统计输出这个字符串中字符'a'的个数和这个字符串中所有有效字符的个数,使用空格分割
输入:aabbcc
输出:2 6
问题分析:
1.字符串最后会有一个'0'结尾,定义一个长度为101的字符串
2.需要统计a的个数和总字符数,因此需要两个用于计数的变量
3.开始进行遍历,统计数量
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char a[101] = "";
int k = 0,n = 0;
cin >> a;
for (int i = 0 ;i < strlen(a);i++){ //遍历字符数组当中的每一个数组
if (a[i] == 'a'){
k++;
}
n++;
}
cout << k << " " << n <<endl; //输出结果
}
加密字符
输入得到一段加密后没有空格的字符串,长度不超过1000。
加密规则:所有数字字符不变,大写和小写字符之间相互转换。编写程序完成密文的解密并输出
输入:abcda
输出:ABCDA
问题分析:
1.字符串最后会有一个'0'结尾,定义一个长度为1001的字符串
2.如果字符在65-90之间,是一个大写字母,如果字符在97-122之间,则是一个小写字母,大小写字母之间间隔32
3.开始进行遍历,进行逐个转换
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char n[1001] = "";
cin >> n;
//开始进行遍历,逐个进行判断
for (int i = 0;i < strlen(n);i++){
if (n[i] >= 65 && n[i] <= 90){ //如果是大写,则加32
n[i] = n[i] + 32;
}
if (n[i] >= 97 && n[i] <= 122){ //如果是小写,则减32
n[i] = n[i] - 32;
}
}
cout << n;
}
课后练习
回文字符串(P2413)
输入一个长度不超过100且不包含空格的字符串,判断这个字符串是否为回文字符串。
如果是则输出OK,否则输出ERROR
回文字符串:字符串从前向后和从后向前的字符顺序一样
输入:ocffco
输入:offfce
输出:OK
输出:ERROR
注意:请进入四曲OJ提交评测查看结果