灯火阑珊201 发表于 2022-10-5 21:13:50

关于加密的问题

Mike要给Alice写一封情书,但又怕别人看到后笑话他,于是他想到了一种简单的加密方法。他想到的方法很简单,就是把文中出现的每一个字母以它后面的第3个字母代替,文中出现的其他符号如数字、空格及标点符号仍保持不变。即:
A-->D, B-->E, ..., W-->Z, X-->A, Y-->B, Z-->C
a-->d, b-->e, ..., w-->z, x-->a, y-->b, z-->c
请你写一个程序,将Mike写的情书进行加密,并将加密后的内容输出。
假设该情书仅包含一段文字。
输入格式:
Mike写的情书,一段文字(一行,仅包含英文字符,包括:大小写字母、数字、标点符号等,长度不超过100个字符)。

输出格式:
加密后的情书。
输入样例:
Dear Alice, I'd like to see you in the northeast corner of teaching building 3 tomorrow evening.
输出样例:
Ghdu Dolfh, L'g olnh wr vhh brx lq wkh qruwkhdvw fruqhu ri whdfklqj exloglqj 3 wrpruurz hyhqlqj.


我的疑问的在于如果用一个字符数组来储存句子的话,用scanf输入遇到空格的时候会停止输入,不知道该怎么写。。。

临时号 发表于 2022-10-5 21:19:36

用getchar()来接收输入

人造人 发表于 2022-10-5 21:36:47

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

int main(void) {
    char buff;
    fgets(buff, 1024, stdin);
    for(size_t i = 0; buff; ++i) {
      if(!isalpha(buff)) continue;
      bool upper = isupper(buff);
      size_t offset = buff - (upper ? 'A' : 'a');
      offset = (offset + 3) % 26;
      buff = offset + (upper ? 'A' : 'a');
    }
    fputs(buff, stdout);
    return 0;
}
页: [1]
查看完整版本: 关于加密的问题