#简单密码#用" %[^\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;
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务