高级守护
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string a;
getline(cin,a);
for(int i=0;i<5;i++)
{
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{
if(a[i]=='A'||a[i]=='a'||a[i]=='B'||a[i]=='b')
{
a[i]+=24;
}
else
{
a[i]-=2;
}
}
cout<<char(a[i]);
}
for(int i=5;i<10;i++)
{
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{
if(a[i]=='y'||a[i]=='z'||a[i]=='Y'||a[i]=='Z')
{
a[i]-=24;
}
else
{
a[i]+=2;
}
}
cout<<char(a[i]);
}
for(int i=10;i<a.size();i++)
{
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{
if(a[i]=='A'||a[i]=='a')
{
a[i]+=25;
}
else
{
a[i]-=1;
}
}
cout<<char(a[i]);
}
return 0;
}
初级光能
王睿卿,其实不需要用三个循环,用一个循环判断就行了。
for(int i=0;i<a.size;i++)
{
if(......)
}
三个大判断,六个小判断。
输出的时候不需要强制类型转换
新手守护
if(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')
{
if(a[i]=='A'||a[i]=='a'||a[i]=='B'||a[i]=='b')
{
a[i]+=24;
}
啥玩意?判断是字母?
a[i]本来就是一个字母,如:
if(a[i]>='C'&&a[i]<='Z'||a[i]>='c'&&a[i]<='z')a[i]-=2;
else if(a[i]=='A'||a[i]=='B'||a[i]=='a'||a[i]=='b')a[i]+=24;
另外两个也一样。
翟谦瑞在2018-03-31 08:10:49追加了内容
补充一下:后面直接输出,不要强制类型转换。
翟谦瑞在2018-03-31 08:21:07追加了内容
你的循环用的太多了!!
新手守护
可以参考如下代码。
循环(int i=0; i<=min(4,l); i++)//第一部分判断并替换 { if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') { if(s[i]=='B') cout<<'Z'; else if(s[i]=='b') cout<<'z'; else if(s[i]=='a') cout<<'y'; else if(s[i]=='A') cout<<'Y'; else cout<<char(s[i]-2); } else cout<<s[i]; } 循环(int i=5; i<=min(9,l); i++)//第二部分判断并替换 { if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') { if(s[i]=='Z') cout<<'B'; else if(s[i]=='z') cout<<'b'; else if(s[i]=='y') cout<<'a'; else if(s[i]=='Y') cout<<'A'; else cout<<char(s[i]+2); } else cout<<s[i]; } 循环(int i=10; i<=l; i++)//第三部分判断并替换 { if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') { if(s[i]=='A') cout<<'Z'; else if(s[i]=='a') cout<<'z'; else cout<<char(s[i]-1); } else cout<<s[i]; }
模拟一遍就行了。