C++为我这个程序为什么错

img

int n;
char str[1000];
gets(str);
scanf("%d",&n);
int len=strlen(str);
for(int i=0;i<len;i++)
{

    if(str[i] >= 'a' && str[i] <= 'z')
    {
        str[i]=str[i] + n;
    }
    if(str[i] >= 'A' && str[i] <= 'Z')
    {
        str[i]=str[i] + n;
    }
    if(str[i]+n>122)
        str[i]=str[i]-26;
}
puts(str);

#include <stdio.h>
#include <string.h>
int main(){
    int n;
    char str[20];
    gets(str);
    scanf("%d",&n);
    int len=strlen(str);
    for(int i=0;i<len;i++)
    {

        if(str[i] >= 'a' && str[i] <= 'z')
        {
            str[i]=str[i] + n;
        }
        if(str[i] >= 'A' && str[i] <= 'Z')
        {
            str[i]=str[i] + n;
        }
    }
    puts(str);
}

运行结果:

img


#include<iostream>
#include<string>
using namespace std;

void main() {
    int n;
    char str[20];
    gets_s(str);
    scanf("%d", &n);
    int len = strlen(str);
    for (int i = 0; i < len; i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            str[i] = str[i] + n;
            if (str[i] > 'z')
            {
                str[i] = str[i] - 'z' + 'a' - 1;
            }
        }
        if (str[i] >= 'A' && str[i] <= 'Z')
        {
            str[i] = str[i] + n;
            if (str[i]>'Z')
            {
                str[i] = str[i] - 'Z' + 'A' - 1;
            }
        }
    }
    puts(str);
}