C++,C语言加规则

加密,输入一串由字母组成的明文字符串,输出密文。添加规则:每个字母用它的后面四个字母代替

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7535088
  • 这篇博客你也可以参考下:C++语言编写程序,输入一个含有数字的字符串,找出其中的所有整数(不考虑正负),排序后以规定运算方式输出
  • 除此之外, 这篇博客: C/C++项目:必学的简单小游戏扫雷教程,不会还不快来学中的  第二步:加上图形库头文件,创建一个不闪退的窗口,定义一个数组,加上全局变量: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    #define ROW 10 //定义数组行列
    #define COL 10
    void show(int arr[][COL])
    {
    	for (int i = 0; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			printf("%2d  ",arr[i][j]);
    		}
    		putchar('\n');
    	}
    	system("cls");
    }

    void GameInit()
    {
    	//创建窗口
    	initgraph(ROW * SIZE, COL * SIZE, SHOWCONSOLE);
    	//设置随机数种子
    	srand((unsigned)time(NULL));
    	//数组初始化为0
    	for (int i = 0; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			map[i][j] = 0;
    		}
    	}
    	//埋雷,用-1表示雷,要10个雷
    	for (int i = 0; i < MINE;)
    	{
    		int r = rand()%ROW;//0-9
    		int c = rand()%COL;
    		if (map[r][c] == 0)//不等于雷的时候,就设置为雷 -1
    		{
    			map[r][c] = -1;
    			i++;		//每埋雷成功一次,加一次
    		}	
    	}

    //让雷周围的九宫格都加1(雷除外)
    	for (int i = 0; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			if (map[i][j] == -1)//如果是雷
    			{
    				for (int m = i - 1; m <= i + 1; m++)
    				{
    					for (int n = j - 1; n <= j + 1; n++)
    					{
    						//排除雷
    						if (map[m][n] != -1 && (m >= 0 && m < ROW && n >= 0 && n < COL))
    						{
    							map[m][n] ++;
    						}
    					}
    				}
    			}
    		}
    	}
    

    //保存图片
    IMAGE img[12];
    
    
    //加载图片
    	for (int i = 0; i < 12; i++)
    	{
    		char file[20] = "";
    		sprintf(file, "./image/%d.jpg", i);
    		loadimage(&img[i], file,SIZE,SIZE);
    	}
    	//加密格子
    	for (int i = 0; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			map[i][j] += 20;
    		}
    
    void GameDraw()
    {
    	//绘图 0 1 2 3 4 5 6 7 8 9 10 11 -1
    	for (int i = 0; i < ROW; i++)
    	{
    		for (int j = 0; j < COL; j++)
    		{
    			if (map[i][j] == -1)
    			{
    				putimage(j * SIZE, i * SIZE, &img[9]);
    			}
    			else if (map[i][j] >= 0 && map[i][j] <= 8)
    			{
    				putimage(j * SIZE, i * SIZE, &img[map[i][j]]);
    			}
    			else if (map[i][j] >= 19 && map[i][j] <= 28)
    			{
    				putimage(j * SIZE, i * SIZE, &img[10]);
    			}
    			else if(map[i][j]>30)
    			{
    				putimage(j * SIZE, i * SIZE, &img[11]);
    			}
    		}
    	}
    }
  • 您还可以看一下 邵发老师的《C语言/C++学习指南》加密解密篇(安全相关算法)课程中的 暴力破解法小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
以下是一个示例代码,用于将输入的明文字符串加密为密文:

#include <iostream>
#include <string>

using namespace std;

string encrypt(string plaintext) {
    string ciphertext = "";
    int len = plaintext.length();
    for (int i = 0; i < len; i++) {
        char c = plaintext[i];
        if (isalpha(c)) {
            // 将字母转换为大写形式
            c = toupper(c);
            // 对字母进行加密
            c = (c - 'A' + 4) % 26 + 'A';
        }
        ciphertext += c;
    }
    return ciphertext;
}

int main() {
    string plaintext;
    cout << "请输入明文字符串:";
    getline(cin, plaintext);
    string ciphertext = encrypt(plaintext);
    cout << "密文字符串为:" << ciphertext << endl;
    return 0;
}

在上面的代码中,encrypt函数接受一个明文字符串作为输入,返回一个密文字符串作为输出。在函数内部,我们使用一个for循环遍历明文字符串中的每个字符,如果字符是一个字母,则将其转换为大写形式。然后,将字母用它的后面四个字母代替,这里使用了一个简单的加密算法,即将字母的ASCII码值减去'A',然后加上4,再对26取模,最后再加上'A',将结果转换回字母形式。最后,将加密后的字符添加到密文字符串中,并返回密文字符串。

在main函数中,我们先读取用户输入的明文字符串,然后调用encrypt函数将明文字符串加密为密文字符串,并输出结果。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢