#include <iostream>
using namespace std;
int main()
{
string s;
cout << "请输入一个字符串:" << endl;
cin >> s;
for (int i = 0; i < s.length(); i++)
{
if (s[i] >= 'A' && s[i] <= 'Z') //判断是否是大写的
{
s[i] = s[i] + 32; //大小写相差32
}
else if (s[i] >= 'a' && s[i] <= 'z') //判断是否是小写 的
{
s[i] = s[i] - 32;
}
}
cout << "改变后的数据为:" << endl;
for (int i = 0; i < s.length(); i++)
{
cout << s[i];
}
return 0;
}
因为在ASCII码中,每个字符都对应一个数字:http://c.biancheng.net/c/ascii/
小写字母转换为大写字母的方法是将小写字母的ASCII码值减去32
那么同理大转小就是加上32
可参考:https://www.php.cn/csharp-article-459399.html
因为大写字母的ASCII码比小写字母的ASCII码值小32。
比如 :a -> A
a的ASCII码值是:65
A的ASCII码值是:97
这是基于ASCII码中的大小写字母的编码规则来实现的。
了解了ASCII码的原理就很容易理解这个解题方法。
ASCII码编码规则中A-Z对应65-90,a-z对应97-122,都是顺序的。每个字母大小写之间的差值都是固定的。
所以'a'-'A'可以得到这个固定差值。