60刚及格,求指点

P1914 小书童——凯撒密码

j27eGU @ 2024-08-29 20:45:15

C++ 超过‘z'就爆了 求教

#include<bits/stdc++.h>
using namespace std;
int n,len;
char str1[51];
int main()
{
    cin>>n>>str1;
    len=strlen(str1);
    for(int i=0;i<=len-1;i++)
    {
        char c=str1[i]+n;
        if(c>'z')c-=26;
        cout<<c;
    }
}

by codingwen @ 2024-08-29 20:59:36

char的储存范围是0-127,而z是122,如果加上n后在127以上就会溢出。

hack:

26
z

by codingwen @ 2024-08-29 21:00:39

建议将c的存储类型改为int,然后将输出改为cout<<char(c)


by computor @ 2024-09-02 22:39:37

@codingwen 其实改成unsigned char也行


|