【C++】求助dalao

P1914 小书童——凯撒密码

HandsomeRaySir @ 2019-07-28 15:29:32

当某蒟蒻我输入26和一条较长的字符串时,它会显示一堆垃圾,这是为神马捏?```cpp

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; }


 _希望得到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~


| 下一页