#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM 50
int main()
{
printf("%s\n","**********playfair算法**********");
int i,j,k=0,m,n,temp=0,length=1,mCount=0,msCount=0;
char key[NUM],voa[26];// 存放密钥的数组和字母表
char table[5][5]; //存放5*5的矩阵
char text[NUM];
//printf("%d",'z');
/****对密钥合法性进行判断*******/
do{
printf("请输入密钥(纯字母): ");
scanf("%s",key); //将密钥存入数组key中
length=strlen(key); //计算数组key的长度
for(i=0;i<length;i++)
{
if (key[i]>='a'&&key[i]<='z'||key[i]>='A'&&key[i]<='Z')
mCount+=1;
else
{
mCount=0;
printf("%s\n","您输入的密钥不合法,请重新输入!");
break;
}
}
}while(mCount!=length);
for(i=0;i<length;i++) //将i和j合并
{
if(key[i]=='j')
key[i]='i';
}
for(i=0;i<length;i++)
{
for(j=i+1;j<length;j++) //循环查询密钥中是否有相同字母
{
if(key[i]==key[j]) //有相同字母
{
for(int t=j;t<length;t++) //如果有相同字母,该字母后面的字母一起前进一位覆盖
{
key[t]=key[t+1];
}
j--;
length--;
}
}
/*if(j==1)