C++ 用循环语句破译密码

大一新生,课堂布置让我们用现有的知识做,必须要用循环语句(我们现在只学了if、 do while 、switch、 for循环语句)不能用字符数组。我真的被难到了,求指点

img

代码在下面,具体代码注释应该解释的很详细了

#include <iostream>
#include <stdio.h>
using namespace std;

char ch;
int main()
{
    cout << "请输入密码:";
    while(~scanf("%c", &ch)) // cin 读不到换行, 所以用 scanf 
    {
        if(ch == '\n') // 因为只输入一行,所以检测到换行就退出 
            break;
        ch -= 3; // 往前移 3 位
        if(ch < 'a') // 如果得到的值比 'a' 还小,说明越界了
            ch += 26; 
        /*
        往后移 26 位,比如 ch 输入为 'a' 移动了之后是 'a' - 3 (不是字母) 
        加上 26 后相当于 'a' - 3 + 26 就是 'z' - 3 就是 'x'
        这样就可以避免越界的问题 
        */
        cout << ch;
    }
}
#include <iostream>
using namespace std;

int main()
{
    char ch;
    while (cin.get(ch))
    {
        if (ch == '\n')
            break;
        ch = (ch - 'a' - 3 + 26)  % 26 + 'a';
        cout << ch;
    }
    return 0;
}