53342321
2019-11-11 16:41
采纳率: 84.2%
浏览 913

NOI 上加密的病历单(字符串)的问题

描述
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。
在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)
2. 逆序存储(abcd -> dcba )
3. 大小写反转(abXY -> ABxy)
输入
一个加密的字符串。(长度小于50且只包含大小写字母)
输出
输出解密后的字符串。
样例输入
GSOOWFASOq
样例输出
Trvdizrrvj
我的代码
#include
#include
int main()
{
char ch[256];
int i,a,t=0;
gets(ch);
int len=strlen(ch);
for(i=0;i {
if(ch[i]>='X'&&ch[i]<='Z') ch[i]-=23;
else if(ch[i]>='A'&&ch[i]<'X') ch[i]+=3;
else if(ch[i]>'a'&&ch[i]<'x') ch[i]+=3;
else if(ch[i]>='x'&&ch[i]<='z') ch[i]-=23;
}
for(i=0;i {
if(ch[i]>='A'&&ch[i]<='Z') ch[i]+=32;
else if(ch[i]>='a'&&ch[i]<='z') ch[i]-=32;
}
for(i=len-1;i>=0;i--)
{
printf("%c",ch[i]);
}
return 0;
}
NOI一直给的是8分,可是并未发现错误,希望大神指点一下

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • bobhuang 2019-11-11 17:25
    已采纳

    看到一个bug,这行:

    else if(ch[i]>'a'&&ch[i]<'x') ch[i]+=3;
    

    这个比较改一下:

    ch[i]>='a'
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题