我正在尝试编写以下示例。
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);
}