#简单密码#用" %[^\n]"解决
简单密码
https://www.nowcoder.com/practice/ff99c43dd07f4e95a8f2f5448da3772a
#include <stdio.h> #include <string.h> //根据明文密文的对照关系,可知需要将字母表进行循环处理 //公式如下(对于任意字符γ):(γ-'A'- 5 + 26)%26 + 'A' //用endofinput来结束输入 //关键在于用" %[^\n]"解决C-scanf遇到空白符和换行符停止的问题 char in_str[200]; int main() { while(scanf("%s",in_str) != EOF) { if(in_str[0] == 'E') { break; } scanf(" %[^\n]", in_str); //读取除了换行符之外的其他字符 int len = strlen(in_str); for(int i=0;i<len;i++) { if(in_str[i]>='A' && in_str[i]<='Z') { in_str[i] = (in_str[i]-'A'-5+26)%26 + 'A'; } } for(int i=0;i<len;i++) { printf("%c",in_str[i]); } printf("\n"); scanf("%s",in_str); //把END符号读掉 } return 0; }