HandsomeRaySir @ 2019-07-28 15:29:32
当某蒟蒻我输入26和一条较长的字符串时,它会显示一堆垃圾,这是为神马捏?```cpp
using namespace std; int main() { int n; cin>>n; char a[66]; cin>>a; int len=strlen(a); for(int i=0;i<len;i++) { a[i]=a[i]+n; if(a[i]>'z') a[i]=a[i]-26; cout<<(char)a[i]; } return 0; }
_希望得到dalao指教_
by 寒鸽儿 @ 2019-07-28 15:33:15
希望更丰富的展现? 使用Markdown。
by HandsomeRaySir @ 2019-07-28 15:35:42
using namespace std;
int main() {
int n;
cin>>n;
char a[66];
cin>>a;
int len=strlen(a); for(int i=0;i<len;i++)
{
a[i]=a[i]+n;
if(a[i]>'z') a[i]=a[i]-26; cout<<(char)a[i];
}
return 0;
}
by 颓废的鲈鱼 @ 2019-07-28 15:35:46
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; cin>>n;
char a[66];
cin>>a;
int len=strlen(a);
for(int i=0;i<len;i++) {
a[i]=a[i]+n;
if(a[i]>'z')
a[i]=a[i]-26;
cout<<(char)a[i];
}
return 0;
}
by 颓废的鲈鱼 @ 2019-07-28 15:36:08
你管那叫重发
by 颓废的鲈鱼 @ 2019-07-28 15:39:33
if(a[i]>'z') 这行改成
if(a[i]+n>'z')吧
不然原始数据没有一个>'z'
其实我也是蒟蒻
by 颓废的鲈鱼 @ 2019-07-28 15:40:20
@HandsomeRaySir
by 寒鸽儿 @ 2019-07-28 15:41:01
由于是按照26个一个循环来的,所以建议您对n取模26再加上a[i]而不是减去26(或者您也可以把if改成while就是不知道会不会超时),因为可能经历了多重循环而您只减去了一重。
by 寒鸽儿 @ 2019-07-28 15:41:28
@HandsomeRaySir
by HandsomeRaySir @ 2019-07-28 15:44:39
@aa1343664580 了解了解2333
by HandsomeRaySir @ 2019-07-28 15:46:32
@oldherd 谢谢dalao~