关于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[!
请问这是为什么? 展开
#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[!
请问这是为什么? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询