1、字符数组认识
字符数组是特殊的数组数据类型是 char。
char s[1000];
为什么说字符数组特殊呢?因为字符数组可以不使用循环直接进行读取和输出。
请注意,对于以上的代码,如果我们输入 “hello”,实际上这个字符串占用了 s 数组中的 6 个单元。
2、字符数组的初始化
#include <iostream>
using namespace std;
int main() {
char s[] = {"hello"};
// cin>>s; // 输入数组元素
cout<<s<<endl;
cout<<s[4];
return 0;
}
3、字符数组的长度
#include <iostream>
#include<cstring> // 字符串库
using namespace std;
int main() {
char s[1000];
int len = 0;//int整数
cin >> s;//s="hello",以'\0'结尾
for(int i=0; s[i] != '\0'; i++){//s[0]='h',s[1]='e'
len++;
}
cout << len << endl;//len=5
int lenn = strlen(s); //用字符串库的strlen()
cout<<lenn;
return 0;
}
4、字符数组的查找
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[] = {"ohi"};
char a[1000];
int ans = 0;
cout<<"请输入字符串:";
cin >> a; // hihellohi
int len=strlen(a);
for(int i=0;i<len-1;i++){//选取开始对比位置
bool flag = true;
for(int j=0;j<2;j++){ //从第a[i]个开始对比
if(a[i+j]!=s[j]){ //发现没有匹配上
flag = false; //标记没配对上
break; //结束循环
}
}
if(flag == true){
ans++;
}
}
cout <<"匹配相等有:"<< ans << endl;
return 0;
}
2 字符串
认识字符串类型 string,需要导入库 #include<string>
,字符串定义跟整数类型定义一样的。 字符串 s 可用 s.size() 方法获取字符串长度。
string 的长度是动态变化的,而 char s[100] 只是一个数组,长度是固定不变的。
2.1 字符串倒序输出
#include <iostream>
#include<string>
using namespace std;
int main() {
string s; //声明字符串
cin >> s;
for(int i=s.size();i>0;i--){ //变量.size()获取长度
cout<<s[i-1]; //输出[i-1]?
}
return 0;
}
2.2 字符串倒排
输入n个字符串,对字符串排序,按输入顺序倒着输出。
#include<iostream>
#include<string>
using namespace std;
int main(){
int cnt=0;
string a[1000];
int n;
cout<<"字符串个数:";
cin>>n;
for(int i=0; i<n;i++){
cin>>a[i];
}
for(int i=n-1; i>=0;i--){
cout<<a[i]<<endl;
}
return 0;
}
2.3 字符串比大小
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1, s2;
while(1){
cin>>s1>>s2;
if(s1>s2){
cout<<s1<<'>'<<s2<<endl;
}if(s1<s2){
cout<<s1<<'<'<<s2<<endl;
} if(s1==s2){
cout<<s1<<'='<<s2<<endl;
}
}
return 0;
}
2.4 输出字符串的最大与最小长度
//I am studying Programming language C in Peking University
#include<iostream>
#include<string>
using namespace std;
int main(){
string s,max_s="",min_s="";
int max=0,min=10000; // 赋值假设字符串最长与最短
while(cin >> s){//循环输入
if(s.size()>max){
max = s.size();
max_s = s; //保存字符串
}
if(s.size()<min){
min = s.size();
min_s = s; //保存字符串
}
if(s=="---"){
break;
}
}
cout << max_s <<endl<< min_s;
return 0;
}