千家信息网

C++如何实现二维数组螺旋加密信息

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编给大家分享一下C++如何实现二维数组螺旋加密信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!由题目要求可知 题目要求先创建一个r行c列的矩阵然后输入一串字符串 字符串长度肯定小
千家信息网最后更新 2026年10月31日C++如何实现二维数组螺旋加密信息

小编给大家分享一下C++如何实现二维数组螺旋加密信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

由题目要求可知 题目要求先创建一个r行c列的矩阵

然后输入一串字符串 字符串长度肯定小于r*c/5

由A C M的表示方式可以看出每个字符由5位的二进制位系统表示(无符号位)

那么我们首先可以先创建一个字符串类型

string a;cin>>a;

rt 字母表示它是26字母表中第几个字母

很多人第一时间想用数组11对应 或者switch语句选择

但转念一想就知道太麻烦了 所以这里用字符的ASCII码减去64来表示它的数字形式

转ASCII码都知道 强类型转换

由于不止一个字符 为了提高代码的复用性 我们专门写个函数来返回字母的数字形式的二进制值

int bit(char a)  //定义一个将字母转换为二进制数的函数 返回二进制数{    int num=int(a)-64;    int result = 0, j = 1;        while(num){                result = result + j * (num % 2);                num = num / 2;                j = j * 10;        }        return result;}

二进制值有了 还得确保每个字母都能转换为5位的二进制系统

故在循环之中再套循环 像00011这种啥数据类型都不是的玩意儿 最好直接给它套数组里去 所以我们先定义个数组

然后按流程把1和0放进去 并通过while循环补全0

for(int count0=0;count0

这时我就达到了把每个5位二进制位系统的值都放进数组里去

但是根据题意可知 有空缺的地方 需要用0填充 故写个for循环将剩下的空用0填充

for(int count1=a.size()*5;count1<(r*c);count1++)    {        arr[count1]=0; //将剩余的位置用0填充    }

重头戏来了

如何螺旋式将这个数组的每个数填到二维数组中去呢?

根据题意可知 填充方向是右下左上

故思路是:

先填充第一行 再填充最后一列 再填充最后一行 再填充第一列

填充完第一行 起始行变量+1

填充完最后一列 末列变量-1

填充完最后一行 末行变量-1

填充完第一列 起始列变量+1

代码如下:

int iStart=0,iEnd=r-1,jStart=0,jEnd=c-1,times1=0,i,j;        while(iEnd>=iStart&&jEnd>=jStart){                //上面的行                 for(j=jStart;j<=jEnd;j++){                        array[iStart][j]=arr[times1];                        times1++;                }                iStart++;                //右边的列                for(i=iStart;i<=iEnd;i++){                        array[i][jEnd]=arr[times1];                        times1++;                }                jEnd--;                //下面的行                 if(iEnd>=iStart){                        for(j=jEnd;j>=jStart;j--){                                array[iEnd][j]=arr[times1];                                times1++;                        }                        iEnd--;                }                //左边的列                 if(jEnd>=jStart){                        for(i=iEnd;i>=iStart;i--){                                array[i][jStart]=arr[times1];                                times1++;                        }                        jStart++;                }        }

根据题意 还有一个大坑 这个恶心的出题人让我们正常打印 即第一行 第二行 第三行....

真是处处都是坑

故直接一个嵌套for循环

for(i=0;i

看完了这篇文章,相信你对"C++如何实现二维数组螺旋加密信息"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

二进制 数组 字母 循环 一行 字符 变量 螺旋 二维 位数 字符串 数字 类型 系统 题意 信息 C++ 加密 代码 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 中国互联网科技工作委员会毛军 凡科互联网科技 互联网科技小额贷款 苏州大垚互联网科技 深圳艾佳互联网科技 互联网科技宣传片 卓越科技互联网 招聘 甘肃拓世互联网科技有限公司 青岛科技大学互联网大赛研究生 开一家科技互联网公司需要多少钱 想开互联网科技公司怎么样 互联网科技创新的路径 群盈汇互联网科技有限公司 上海钢联属于互联网科技股吗 互联网科技实习生岗位 上海创道互联网络科技有限公司 35岁以上互联网科技行业 山东大美朱楼互联网科技有限公司 吉林省码上互联网科技电话 深圳市人人互联网科技有限公司 江苏根荣互联网科技 互联网科技公司华为 广州互联网科技公司 互联网科技英文翻译 银川新华互联网科技职业技术培训学校图片 互联网企业和科技型企业 新兴科技互联网创新大赛颁奖典礼 辽宁互联网新科技 扫呗互联网科技有限公司
0