gpt4 book ai didi

凯撒密码回到 'A'/'a'

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:22 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
#include <ctype.h>


void encrypt(char *theString, int shift) {
while (*theString) {
if (isalpha(*theString)) {
*theString += shift;
}
theString++;
}
}

int main(void) {
int shift;
int *ip;

ip = &shift;
char theString[80];
printf("Enter String: ");
fgets(theString, 80, stdin);
printf("Enter Number: ");
scanf("%d", &shift);

encrypt(theString,shift);
puts(theString);

return(0);
}

到此为止,感谢您的帮助。

现在,我需要帮助在用户键入“Z”时返回“A”,而不是转到 [(对于小写字母)。我知道我需要一些 if 语句,但不确定是哪些。感谢您提供的所有帮助。

最佳答案

首先旋转角色。这可能会导致无效字符(旋转过 Z)。

旋转字符后,检查字符是否大于'Z'。如果是,那么您需要弄清楚它距离“Z”有多远。为此,从字符中减去“Z”。

你现在有角色“过去 Z 多远”了。您需要获取此数字并将其转换为“超过 A 的距离”,这意味着您将减去 1。

既然您已经知道“超过 A 多远”,您只需将字符“A”添加到该值,您将获得所需的值。

总而言之,“减去‘Z’,加上‘A’并减去 1”。

while (*theString) {
if (isalpha(*theString) && isLower(*theString)) {
*theString += shift;
while (*theString > 'z') {
*theString = *theString - 'z' - 1 + 'a';
}
} else if (isalpha(*theString) && isUpper(*theString)) {
*theString += shift;
while (*theString > 'Z') {
*theString = *theString - 'Z' - 1 + 'A';
}
}
theString++;
}

关于凯撒密码回到 'A'/'a',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com