|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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输入遇到空格的时候会停止输入,不知道该怎么写。。。
- #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;
- }
复制代码
|
|