关于#c语言#的问题:利用一维字符数组实现一段英文的加密,如“I love you so much. Would you marry me

利用一维字符数组实现一段英文的加密,如“I love you so much. Would you marry me?”。加密原则为:将英文字符向后循环滚动8位,如‘a’转变为‘i’、‘q’转变为‘y’,‘Z’转变为‘H’,空格和标点符号等字符保持不变。打印输出加密后的密文。

与'A'进行差值计算,然后加上8后求余26

#include <stdio.h>
int main()
{
    char s[1000];
    gets(s);
    while(s[i] != '\0')
    {
        if(s[i] >= 'a' && s[i] <='z')
            s[i] = (s[i] - 'a' + 8)%26 + 'a';
        else if(s[i] >= 'A' && s[i] <='Z')
            s[i] = (s[i] - 'A' + 8)%26 + 'A';    
         i++;
    }
    puts(s);
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    答案:

    首先需要输入一段英文,将其存放在一维字符数组中:

    char[] originalText = "This is a test sentence.".toCharArray();
    

    然后我们需要遍历这个字符数组,对每一个英文字符进行加密:

    for (int i = 0; i < originalText.length; i++) {
        char c = originalText[i];
        if (c >= 'A' && c <= 'Z') {
            // 大写字母加密
            c = (char) ((c - 'A' + 8) % 26 + 'A');
        } else if (c >= 'a' && c <= 'z') {
            // 小写字母加密
            c = (char) ((c - 'a' + 8) % 26 + 'a');
        }
        // 输出加密后的字符
        System.out.print(c);
    }
    

    在遍历字符数组时,我们首先判断该字符是否为大写或小写字母,若是,则进行加密操作,其具体方法为:将该字符与字符'A'或'a'相减,再加上8,最后对26取余,再加上字符'A'或'a'即可。最后,我们将加密后的字符输出即可。

    完整代码如下:

    public class Encryptor {
        public static void main(String[] args) {
            char[] originalText = "This is a test sentence.".toCharArray();
            for (int i = 0; i < originalText.length; i++) {
                char c = originalText[i];
                if (c >= 'A' && c <= 'Z') {
                    // 大写字母加密
                    c = (char) ((c - 'A' + 8) % 26 + 'A');
                } else if (c >= 'a' && c <= 'z') {
                    // 小写字母加密
                    c = (char) ((c - 'a' + 8) % 26 + 'a');
                }
                // 输出加密后的字符
                System.out.print(c);
            }
        }
    }
    

    输出结果为:

    Bpqa qa i bmab aitiaib.
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^