关于C++字符串移位输出,为什么我用if(s1[i]=='Z')的写法会出错? 5

#include<iostream>#include<string>usingnamespacestd;intmain(){strings1,s2;getline(cin... #include<iostream>
#include<string>
using namespace std;
int main(){
string s1,s2;
getline(cin,s1);
for(int i=0;i<s1.length();i++){
if(s1[i]>='A'&&s1[i]<='Z'||s1[i]>='a'&&s1[i]<='z'){
s1[i]++;
if(s1[i]>='Z'&&s1[i]<='a'||s1[i]=='z')
s1[i]-=26;
}
s2=s2+s1[i];
}
cout<<endl;
cout<<s2<<endl;
return 0;
}
测试的数据为
adfaz zsdf!aadsfc,AZ!
输出为
begba ateg!bbetgd,BA!

这样子是正确的。如果把if(s1[i]>='Z'&&s1[i]<='a'||s1[i]=='z')换成
if(s1[i]=='Z'||s1[i]=='z')
输出就有错误。
输出为
begb{ {teg!bbetgd,B[!

请问这是为什么?
展开
 我来答
人人顺风顺水
2019-05-10 · TA获得超过164个赞
知道小有建树答主
回答量:315
采纳率:77%
帮助的人:111万
展开全部
第二个if语句其实你没有写对,如果你把52个字符全都验证一下,就会发现问题。可以改成>Z && <a || >z,加上<a的判断是因为所有的小写字母都比Z大,必须把它们和大写字母区分开来
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式