c语言字符串转换问题,如下

已知接收到的密码在发送时的转换规则是将字母转换为其后的第五个字母,如:'A'转换为'F','B'转换为'G',以此类推,而'V'转换为'A'……'Z'转换为'E'。现在从键盘输入一串接收到的密码,要求还原为原来的字符串。
【输入说明】
输入只有一行字符串,表示密码长度<80
【输出说明】
输出只有一行字符串,为还原后的原来的字符串。
【输入样例】
HRSfg
【输出样例】
CMNab

img

可以得到样例结果,但是如果输入a-e则不会有任何变化,是不是进入第二个if里了?如果是,应该怎么修改呢?


#include <iostream>
#include <stdio.h>
#include <cstring>
#include <iostream>
using namespace std;
int main() {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
    char s[128];
    scanf("%s", s);
    for(int i = 0; s[i]; ++i)
    {
        int startIndex = 0;
        if(s[i] >= 'A' && s[i] <= 'Z' )
           startIndex = 'A';
        else if( s[i] >= 'a' && s[i] <= 'z')
            startIndex = 'a';
        else
            break;

         s[i] = startIndex+  (((int)s[i] - startIndex - 5+26) % 26);
    }
    cout << s;
    return 0;
}

供你参考,望采纳

样例是样例,不是让你写代码专门输出样例的结果,你再看一次题目。