鱼C论坛

 找回密码
 立即注册
查看: 2192|回复: 2

[已解决]关于加密的问题

[复制链接]
发表于 2022-10-5 21:13:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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:36:47
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

int main(void) {
    char buff[1024];
    fgets(buff, 1024, stdin);
    for(size_t i = 0; buff[i]; ++i) {
        if(!isalpha(buff[i])) continue;
        bool upper = isupper(buff[i]);
        size_t offset = buff[i] - (upper ? 'A' : 'a');
        offset = (offset + 3) % 26;
        buff[i] = offset + (upper ? 'A' : 'a');
    }
    fputs(buff, stdout);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-5 21:19:36 | 显示全部楼层
用getchar()来接收输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-5 21:36:47 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

int main(void) {
    char buff[1024];
    fgets(buff, 1024, stdin);
    for(size_t i = 0; buff[i]; ++i) {
        if(!isalpha(buff[i])) continue;
        bool upper = isupper(buff[i]);
        size_t offset = buff[i] - (upper ? 'A' : 'a');
        offset = (offset + 3) % 26;
        buff[i] = offset + (upper ? 'A' : 'a');
    }
    fputs(buff, stdout);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表