我正在尝试编写以下示例。

Input  ABCDEFGHIJKLMNOPQRSTUVWXYZ

Output  ZYXWVUTSRQPONMLKJIHGFEDCBA


如果用户键入A,则将输出Z。它必须超过25个字符才能达到Z。所以我猜需要一个while循环,如果B必须经过23次,所以– 2依此类推,直到达到M,因为它将跳过1到达N,然后开始再次在25。

关于如何解决这个问题的任何建议?

最佳答案

根据ASCII表,大写的ASCII字符范围从65(0x41,'A')到90(0x5A,'Z')。

这是算法:

// inputChar is a char holding your character
char inputChar = getCharFromUser();
int inputVal = inputChar - 65; // e.g. 0 for 'A', 1 for 'B'
char outputChar = 90 - inputVal; // e.g. 90 - 1 = 89 = 'Y'
outputCharToUser(outputChar);


这就是您可以在C#中实现的方式:

while (true)
{
    var key = Console.ReadKey(intercept: true);
    var inputChar = char.ToUpper(key.KeyChar);
    var outputChar = (char)('Z' - inputChar + 'A');
    Console.Write("{0}={1} ", inputChar, outputChar);
}

09-25 22:19