问题标题: 酷町堂:1091 战时密码本

0
0
已解决
张云瀚
张云瀚
初级天翼
初级天翼

题目链接: 酷町堂:1091

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
string a,b;
int main(){
    cin>>a;
    for(int i=0;i<a.size();i++){
        b[i]=a[a.size()+i-1];
    }
    for(int i=0;i<a.size();i++){
        b[i]=b[i]-2;
    }
    for(int i=0;i<a.size();i++){
        if(b[i]>='a'&&b[i]<='z'){
            b[i]=b[i]+32;
        }
        else if(b[i]>='A'&&b[i]<='Z'){
            b[i]=b[i]-32;
        }
    }
    cout<<b;
    return 0;
}
 


0
已采纳
熊潇然
熊潇然
初级启示者
初级启示者

逆序存储不对!

怎么能是+i呢?明明是- i

 

右移也不对!

假如b[i]是y,Y,z,Z,右移后就是乱码了

还要加特判!

0
熊潇然
熊潇然
初级启示者
初级启示者

右移说错了,因为要还原,是左移,特判是a,A,b,B

还有大小写转换也错了,如果是小写,应该是-=32,小写字母的ASCLL比大字母的ASCLL大!!!

大写的话就+=32

0
我要回答