这是C语言选拔赛最后一题,题目如下:

/*
* c语言竞赛初赛本科最后一题
*/
#include<stdio.h>
#include<string.h>
//矩阵
char matrix[5][5];
//存储26个字母在矩阵中的行号和列号,不在矩阵中行列号均为-1
int charSite[26][2];
//填充matrix矩阵
void init()
{
int i,j,k=0,len;
char str[26];
gets(str);
len=(int)strlen(str);
for(i=0;i<25;i++){
if(i<len)
*(*matrix+i)=str[i];
else{
for(j=0;j<i;j++)
if('a'+k==*(*matrix+j)){
k++;
j=-1;
}
*(*matrix+i)='a'+k;
}
}
}
//计算各个字母在矩阵中的行号和列号
void calculateCharSite()
{
int i;
for(i=0;i<26*2;i++)
*(*charSite+i)=-1;
for(i=0;i<25;i++){
charSite[*(*matrix+i)-'a'][0]=i/5;
charSite[*(*matrix+i)-'a'][1]=i%5;
}
}
//加密
void encrypt(char *str)
{
int i;
char ch2,ch1,temp;
int len=(int)strlen(str);
for(i=1;i<len;i+=2){
//两个字母相等或其中一个字母不在矩阵中,不作改变
if(str[i-1]==str[i] || charSite[str[i-1]-'a'][0]<0 ||charSite[str[i]-'a'][0]<0)
continue;
//在同一行或同一列,交换位置
if(charSite[str[i-1]-'a'][0] == charSite[str[i]-'a'][0]
||charSite[str[i-1]-'a'][1] == charSite[str[i]-'a'][1]){
temp=str[i-1];
str[i-1]=str[i];
str[i]=temp;
}else{//不同行,不同列,找对角矩形
ch1=matrix[charSite[str[i-1]-'a'][0]][charSite[str[i]-'a'][1]];
ch2=matrix[charSite[str[i]-'a'][0]][charSite[str[i-1]-'a'][1]];
str[i-1]=ch1;
str[i]=ch2;
}
}
}
void main()
{
char str[100];
init();
calculateCharSite();
gets(str);
encrypt(str);
puts(str);
}

- 大小: 257.1 KB
分享到:
相关推荐
自己写的playfair加密解密算法,绝对可以运行 可供初学者参考一下
在`playfair密码.cpp`文件中,实现Playfair密码的算法可能包括以下步骤: 1. **读取密钥和明文**:程序需要从用户那里获取密钥短语和明文消息。 2. **构建矩阵**:根据密钥短语创建5x5的密钥矩阵。 3. **预处理明文*...
13. 凯尔·奥尼尔(Kieran O'Neill,22岁):出售了第一个网站后,创立了游戏社交平台Playfire,同时管理着全球最大的PlayStation粉丝网站。 14. 布莱克·罗斯(Blake Ross,24岁):19岁参与开发了Firefox浏览器,...
实训商业源码-抽奖模块V2.4.4 开源版-毕业设计.zip
实训商业源码-酷炫小程序相册V4.7.0 前端+后端-毕业设计.zip
实训商业源码-QQ域名防报毒网站程序PHP源码 带后台-毕业设计.zip
实训商业源码-便利店小程序 1.0.9-毕业设计.zip
实训商业源码-H5手机转盘活动游戏页面源码-毕业设计.zip
实训商业源码- 视频小店V1.0.4 原版-毕业设计.zip
实训商业源码-仿B站风格视频影视电影网站源码-毕业设计.zip
实训商业源码-C风格门户版1.1 UTF8+GBK-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-星尘.zip
实训商业源码-酷炫小程序相册 4.5.8-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-一天,一生.zip
scratch少儿编程逻辑思维游戏源码-线路关闭.zip
内容概要:本文详细介绍了如何利用MATLAB/Simulink搭建独立运行的光伏混储微电网系统。主要内容涵盖光伏的最大功率点跟踪(MPPT)控制方法,尤其是扰动观察法(P&O)的具体实现及其优化技巧;混合储能系统的功率分配策略,包括采用低通滤波器将功率需求分为低频和高频分量分别由蓄电池和超级电容承担;以及针对不同储能元件的特殊控制措施,如蓄电池的充放电效率补偿和超级电容的限流保护。此外,还讨论了仿真调试过程中的常见问题及解决方案,强调了各子系统的协同工作对于整个系统稳定性的重要意义。 适合人群:从事电力电子、新能源发电领域的研究人员和技术人员,尤其适用于有一定MATLAB/Simulink基础并对光伏混储微电网感兴趣的读者。 使用场景及目标:帮助读者掌握光伏混储微电网的设计与实现方法,特别是在MATLAB/Simulink环境下进行系统建模、仿真和优化的能力。通过学习本文提供的具体案例和技术细节,能够更好地理解和解决实际工程中遇到的问题。 其他说明:文中提供了大量实用的代码片段和调试经验,有助于加深对理论知识的理解并提高动手能力。同时提醒读者关注各个组件之间的相互影响,确保系统整体性能最优。
【低空经济】低空人工智能调度中心建设方案
coneypo_ML_handwritten_number_21976_1746366665585.zip
scratch少儿编程逻辑思维游戏源码-足球传送门.zip