0

我正在为学校解决一个问题,我必须编写一个旋转 13 个字符的程序。我已经完成了程序,但它会旋转成一些奇怪的字符。我想让它在大写和小写都达到“z”后回到“a”。基本上,我想将我的选项限制为 AZ 和 az。

尝试混合使用 while 语句和 if 语句,最后只使用了一些 if 语句。我知道他们错了,但它以当前状态运行。

#include <iostream>
using namespace std;

//Function Prototypes
char rot(char c);
int mylen(char c[]);

int main()
{
    char in[120], out[120];
    int i;  // index into in

    cout << "Enter text: ";
    cin.getline(in,120);
    while (strcmp(in, "exit"))
    {
        for (i = 0; i < mylen(in); i++)
        {
            out[i] = rot(in[i]);
        }
        out[i++] = '\0';

        cout << out << endl;
        cout << endl << "Enter some more text: ";
        cin.getline(in,120);
    }


    return 0;
}

char rot(char c)
{
        if (c >= 'a' and c <= 'z')
        c = c + 13;

    if (c > 'z')
        c = c - 26;


else if (c >= 'A' and c <= 'Z')

        c = c + 13;

    if (c > 'Z')
        c = c - 26;

    return c;
}

int mylen(char c[])
{
    int cnt = 0;

    while (c[cnt] != '\0')
        cnt++;

    return cnt;
}

我只是想让它旋转 13 个字符,当有人输入旋转代码时,再将它旋转 13 个字符。

4

1 回答 1

0

建议你仔细观察ASCII码表来显示字符。大写字母“A”~“Z”和小写字母“a”~“z”之间有6个字符

这是我的代码:

if (c >= 'n' && c <= 'z')
    {
        c = c - 13;
    }
    else if (c >= 'a' && c <= 'm')
    {
        c = c + 13;
    }

    if (c >= 'N' && c<='Z')
    {
        c = c - 13;
    }

    else if (c >= 'A' && c <= 'M')
    {
        c = c+13;
    }
于 2019-11-12T02:40:40.887 回答