C++语法基础课习题5——字符串-创新互联
文章目录
分享标题:C++语法基础课习题5——字符串-创新互联
URL地址:http://scyanting.com/article/cdjphj.html
- 例题
- 1. 760.字符串的长度(fgets函数)重点!
- 2. 761.字符串中数字的个数
- 3. 763.循环相克令
- 4. 765.字符串加空格(getline函数+auto用法)重点!
- 5. 769.替换字符 重点!
- 6. 773.字符串的插入(substr函数)重点!
- 7. 772.只出现一次的字符(难题)
- 习题
- 1. 762.字符串匹配
- 2. 768.忽略大小写比较字符串大小
- 3. 767.信息加密
- 4. 766.去除多余的空格
- 5. 764.输出字符串
- 6. 770.单词替换
Acwing 760.字符串的长度
- 使用fgets函数
#include#includeusing namespace std;
int main()
{char str[101];
fgets(str,102,stdin);// stdin是系统定义好的变量,fgets会把回车读进来,就是说不会过滤回车
int len = 0;
for(int i = 0;str[i] && str[i] != '\n';i++) len++;// str[i]遇到\0就跳出来, str[i]不能等于回车,因为fgets会自动读入回车
cout<< len<< endl;
return 0;
}
- 使用getline函数
#include#include#includeusing namespace std;
int main()
{string str;
getline(cin,str);
cout<< str.size()<< endl;
return 0;
}
- 方法3
#include#includeusing namespace std;
int main()
{char c;
int len = 0;
while(~scanf("%c",&c)) len++;
cout<
2. 761.字符串中数字的个数Acwing 761.字符串中数字的个数
#include#includeusing namespace std;
int main()
{char str[101];
fgets(str,102,stdin);
int cnt = 0;
for(int i = 0;str[i]; i++)
if(str[i] >= '0' && str[i]<= '9')
cnt++;
cout<< cnt<< endl;
return 0;
}
3. 763.循环相克令Acwing 763.循环相克令
#include#includeusing namespace std;
int main()
{int n;
cin >>n;
while(n--)
{string a,b;
cin >>a >>b;
int x,y;
if(a == "Hunter") x = 0;
else if(a == "Bear") x = 1;
else x = 2;
if(b == "Hunter") y = 0;
else if(b == "Bear") y = 1;
else y = 2;
if(x == y) puts("Tie");
else if (x == (y + 1) % 3) puts("Player1");% 使用%可以让1赢0,2赢1,0赢2均符合
else puts("Player2");
}
return 0;
}
4. 765.字符串加空格(getline函数+auto用法)重点!Acwing 765.字符串加空格
#includeusing namespace std;
int main()
{string a;
getline(cin, a);// getline函数只能用到string类型
string b;
for(auto c : a) b = b + c + ' ';
b.pop_back();// 把新生成的字符串最后的空格删除
cout<< b<< endl;
return 0;
}
5. 769.替换字符 重点!Acwing 769.替换字符
#include#includeusing namespace std;
int main()
{char str[31];
scanf("%s",str);// 读入到回车或者'\0'就结束了
char c;
scanf("\n%c", &c);// 读入要替换的字符,读入字符不会自动过滤掉前面的回车\n,会读入回车。需要在前面加\n
for(int i = 0;str[i];i++)
if(str[i] == c)
str[i ] = '#';
puts(str);
return 0;
}
6. 773.字符串的插入(substr函数)重点!Acwing 773.字符串的插入
- substr函数可以查找从i开始,长度为len的字符串
#includeusing namespace std;
int main()
{string a, b;
while(cin >>a >>b)
{int p = 0;
for(int i = 0;i< a.size();i++)// string字符串本身就是数组
if(a[i] >a[p])
p = i;// 得到Ascii值大的字符的下标
//前一个指从坐标0开始,长度为p+1的字符,后面是从坐标p+1开始,到最后的字符
cout<< a.substr(0, p+1)<< b<< a.substr(p+1)<< endl;
}
return 0;
}
7. 772.只出现一次的字符(难题)Acwing 772.只出现一次的字符
#include#include#include// 字符串的函数
using namespace std;
int cnt[26] = {0};// 存储每个字母出现的次数
char str[100010];// 存储字符串
int main()
{cin >>str;
// str[i]里面都是小写字母,小写字母 - 'a'结果是整数,0-25分别表示a-z,'a'在做运算时都是整数运算
for(int i = 0;str[i];i ++) cnt[str[i] - 'a'] ++;// cnt[]++表示对当前数组元素进行自增操作,元素值+1
for(int i = 0;str[i];i ++)
if(cnt[str[i] - 'a'] == 1)// 判断cnt[]中哪一个的元素值为1
{cout<< str[i]<< endl;
return 0;
}
puts("no");
return 0;
}
习题
1. 762.字符串匹配Acwing 762.字符串匹配
#includeusing namespace std;
int main()
{double k;
string a, b;
cin >>k >>a >>b;
int cnt = 0;
for(int i = 0;i< a.size();i++)
if(a[i] == b[i])
cnt++;
if((double)cnt / a.size() >= k) puts("yes");
else puts("no");
}
2. 768.忽略大小写比较字符串大小Acwing 768.忽略大小写比较字符串大小
#include#include// char需要
#include// strcmp需要
using namespace std;
int main()
{char a[100], b[100];
fgets(a, 100, stdin);
fgets(b, 100, stdin);
// fgets多了回车符,需要去掉回车符
if(a[strlen(a) - 1] == '\n') a[strlen(a) - 1] = 0;
if(b[strlen(b) - 1] == '\n') b[strlen(b) - 1] = 0;
for(int i = 0; a[i];i++)
if(a[i] >= 'A' && a[i]<= 'Z')
a[i] += 32;// 变成小写
for(int i = 0; b[i];i++)
if(b[i] >= 'A' && b[i]<= 'Z')
b[i] += 32;
int t = strcmp(a, b);
if(t == 0) puts("=");
else if(t< 0) puts("<");
else puts(">");
return 0;
}
3. 767.信息加密Acwing 767.信息加密
#includeusing namespace std;
int main()
{string s;
getline(cin, s);// 读入有空格的字符串
for(auto &c : s)
{if(c >= 'a' && c<= 'z') c = 'a' + (c - 'a' + 1) % 26;// 后面表示新的偏移量
else if(c >= 'A' && c<= 'Z') c = 'A' + (c - 'A' + 1) % 26;
}
cout<< s<< endl;
return 0;
}
4. 766.去除多余的空格Acwing 766.去除多余的空格
- cin 做法
#includeusing namespace std;
int main()
{string s;
while(cin >>s) cout<< s<<' ';// cin 遇到空格就停止读入,读入一个字符串,就加一个空格
return 0;
}
- 方法2:双指针算法
Acwing 764.输出字符串
#includeusing namespace std;
int main()
{string a,b;
getline(cin, a);
for(int i = 0;i< a.size();i++)
b += (char)(a[i] + a[(i+1)%a.size()]);// %因为i为最后一个字母时,i+1要变为零
cout<< b<< endl;
return 0;
}
6. 770.单词替换Acwing 770.单词替换
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享标题:C++语法基础课习题5——字符串-创新互联
URL地址:http://scyanting.com/article/cdjphj.html