AD钙奶OvO @ 2019-01-06 20:47:32
我感觉我大致知道错在哪里但是我不知道怎么去改……```cpp
using namespace std; int main(){ string s; int n; cin>>n; cin>>s; for(int i=0;i<s.size();i++) { s[i]+=n; if(s[i]>'z') s[i]=s[i]-26; } cout<<s; return 0; }
by 初音Miku @ 2019-01-06 20:48:13
希望更丰富的展现?使用Markdown
by AD钙奶OvO @ 2019-01-06 20:49:27
我不怎么会用洛谷...第一次发帖求助...大佬帮帮我...
by wxy_god @ 2019-01-06 20:54:43
楼主的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int n;
cin>>n;
cin>>s;
for(int i=0;i<s.size();i++)
{
s[i]+=n;
if(s[i]>'z')
s[i]=s[i]-26;
}
cout<<s;
return 0;
}
by wxy_god @ 2019-01-06 20:55:57
@AD钙奶OvO 你只判断了小写字母的情况,那大写字母怎么办呢?
by AD钙奶OvO @ 2019-01-06 20:56:00
@我是一个垃圾 啊谢谢!!
by AD钙奶OvO @ 2019-01-06 20:56:53
@我是一个垃圾 题干里不是说了“均为小写”吗...
by wxy_god @ 2019-01-06 21:01:32
@AD钙奶OvO 哦对...没看...我再看看
by AD钙奶OvO @ 2019-01-06 21:03:02
@我是一个垃圾 我觉得大概是
if(s[i]>'z')
s[i]=s[i]-26;
这里出了问题
by wxy_god @ 2019-01-06 21:03:55
@AD钙奶OvO 可我也是这么写的啊...
by wxy_god @ 2019-01-06 21:08:16
@AD钙奶OvO 你把那段改成
unsigned char q = s[i]+a;
while(q>'z')
{
q-=26;
}
cout << q;
题目中a可能很大,超过char了,使用unsigned范围大一倍,就不会超了
其实题目也不严谨,没有说a的最大值