字符串练习题
解题代码:
第二题:字符串的数字个数
解题代码:
第三题:循环相克令
备注: 代码暂时没写
第四题:字符串加空格
解题代码:
第五题:替换字符
解题代码:
第六题:字符串插入
解题思路: 找到字符串中最大字符的位置,在其右侧插入第二个字符串
解题代码:
第七题:字符串匹配
解题思路: 计算两个等长字符串的匹配率,与给定阈值比较输出结果
解题代码:
#include <iostream>
using namespace std;
int main(){
float k; // 匹配阈值
string a, b;
cin >> k >> a >> b;
int sum = 0; // 记录匹配的字符个数
// 遍历字符串,统计对应位置字符相同的个数
for (int i = 0; i < a.size(); i++) {
if (a[i] == b[i]) {
sum++;
}
}
// 计算匹配率,与阈值比较输出结果
if ((float)sum / a.size() >= k) {
cout << "yes" << endl;
} else {
cout << "no" << endl;
}
return 0;
}
第八题:忽略大小写比较字符串大小
解题思路: 先将两个字符串统一转为小写(或大写),再用strcmp函数比较
解题代码:
#include <iostream>
#include <cstring> // 包含strcmp函数
using namespace std;
int main(){
char a[100], b[100];
// 读取两个字符串(支持含空格的整行输入)
cin.getline(a, 100);
cin.getline(b, 100);
// 将字符串a转为小写
for (int i = 0; a[i]; i++) {
if (a[i] <= 'Z' && a[i] >= 'A') {
a[i] += 32; // 大写转小写:ASCII码+32
}
}
// 将字符串b转为小写
for (int i = 0; b[i]; i++) {
if (b[i] <= 'Z' && b[i] >= 'A') {
b[i] += 32;
}
}
// 比较两个小写字符串
int t = strcmp(a, b);
if (t == 0) {
cout << '=' << endl;
} else if (t < 0) {
cout << '<' << endl;
} else {
cout << '>' << endl;
}
return 0;
}