c语言题看内容写代码

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

借用一个常量1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
根据偏移位offset生成新的常量2,如offset=6,常量2="GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEF"
然后对明文中逐个字符进行替换,常量1中找到这个字符的索引,在常量2中根据索引找到对应值替换。根据实际需要,常量可以换成字符数组。
也可以看一下这些字符的ascii码,找出规律,通过ascii码变换来加密。

#include <iostream>
int main()
{
//最大字符少于80
    static const int MAX = 80;
    char* a = new char[MAX];
    std::cout << "输入密文:" << std::endl;
    //输入
    cin >> a;
    std::cout << "输入偏移量:" << std::endl;
    int m;
    cin >> m;
    for (int i = 0; i < 80; i++)
    {
        //读取字符串 直到换行为止
        char &c = a[i];
        //需要注意的是,cin并不会保留换行,而是舍弃换行添加'\0'
        if ('\0' == c)
            break;
        c = c + m;
    }
    cout << a << endl;
    return 0;
}

img

我这里使用的是cin,如果遇到空格或者换行就会停止,如果要更完美使用getline更好。但判断语句也会发生变化。