Drumk 2024-10-23 17:10 采纳率: 33.3%
浏览 12

用c语言来编译把一串密文译成明文,密文以字符@表示结束

用c语言来编译把一串密文译成明文,密文以字符@表示结束。译码规则如下:(不可用ctype.h里的库函数)(用字符串解决)
a.如果是字母,转换成字母序列的下一个字母。如A译成B、B译成C。
b.如果是字母Z,译成A。
c.无论是大小写字母都译成小写字母。
d.其他字符一律照原样译出。

img

  • 写回答

1条回答 默认 最新

  • Cin.白术 2024-10-23 17:48
    关注
    
    #include <stdio.h>
    
    int main() {
        char input[1000]; // 假设输入的密文长度不超过1000
        int i = 0;
    
        // 读取输入
        while ((input[i] = getchar()) != '@') {
            if (input[i] == '\n') { // 忽略换行符
                continue;
            }
            i++;
        }
        input[i] = '\0'; // 添加字符串结束符
    
        // 解码并输出
        for (int j = 0; j < i; j++) {
            char c = input[j];
            if (c >= 'A' && c <= 'Z') { // 大写字母
                putchar(((c - 'A' + 1) % 26) + 'a'); // 转换成下一个字母的小写形式
                //若为Z,则c-’A'+1=26,在取模后为0,则可转化为a,下同
            } else if (c >= 'a' && c <= 'z') { // 小写字母
                putchar(((c - 'a' + 1) % 26) + 'a'); // 转换成下一个字母
            } else {
                putchar(c); // 其他字符保持不变
            }
        }
    
        putchar('\n'); // 输出换行符
    
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月23日