1、string类型(数据类型)概念:
2、判断字符串的长度
3、遍历字符串,找位置是3的倍数的数字
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.length(); i++)
{
// 遍历字符串中的每个元素
if((i+1) % 3 == 0)
{
cout <<s[i];
}
}
return 0;
}
4、凯撒加密
字符串+偏移量
5、求偏移后的加密结果(偏移量 = 字符自增的大小)
问题:如果偏移后的字符超出字母z ?
假设:偏移量是n,字母对应的数字是x;然后对(n + x)结果进行判断
如果(n + x)小于等于25 ,那偏移后的结果依然是(n + x);
如果(n + x)大于25,那就对(n + x)除以26的结果进行取余数,得到的余数就是偏移后的结果
例如:
总结:对任何情况都可以使用(n + x)% 26取余
例如:
#incude <iostream>
using namespace std;
int main()
{
char x; //x为输入的字母
int n; //n是偏移量
cin >>x >>n;
if((x > 'a') && (x < 'z'))
{
x = ((x - 'a' + n) % 26) + 'a';
//先通过(x-'a')得到字母x对应的数值,然后加上偏移量n,再求余数,再将得到的余数加上字符'a'转换成字母
}
return 0;
}
6、对字符串进行凯撒加密 (需要判断大小写)
#include <iostream>
using namespace std;
int main()
{
string s; //字符串s
int n; //偏移量n
cin >> s >> n;
for (int i = 0; i < s.length(); i++)
{
if((s[i]>='a') && (s[i]<='z')) //判断小写字母
{
s[i] = (s[i] - 'a' + n)%26 +'a';
}
if((s[i]>='A') && (s[i]<='Z')) //判断大写字母
{
s[i] = (s[i] - 'A' + n)%26 +'A';
}
}
cout << s;
return 0;
}