#include <stdio.h>
#include <string.h>
int main()
{
int i,j,k,length,flag;
char org[26],pair[26],pair2[26],point[26],point2[26],code[256];
for(i=0;i<26;i++)
{
pair[i]=97+i;
org[i]=97+i;
}
printf(“the orignal data:\n”);
for(i=0;i<26;i++)
{ printf("%c “,org[i]);}//原始的字母表a b c d e f g h i j k l m n o p q r s t u v w x y z
printf(”\n");
printf(“input the point vacabulary:”);
scanf("%s",point);
length=strlen(point);
for(i=0,k=0;i<length;i++)
{
flag=1;
for(j=0;j<i;j++)
{if(point[i]==point[j])flag=0;}
if(flag)
{
point2[k]=point[i];
k++;
}
}
point2[k]=’\0’;
printf(“the operated point2 data:%s\n”,point2);//去掉重复字母后的关键词
length=strlen(point2);
for(i=0;i<26;i++)
{
for(j=0;j<length;j++)
{if(pair[i]==point2[j])
pair[i]=’#’;}
} //先令pair为顺序字母表,将其中与关键词相同的字母标记为’#‘字符
for(i=0,j=0;i<26;i++)
{
if(pair[i]!=’#’)
{pair2[j]=pair[i];j++;}
} //将pair中非’#'的字符顺序赋值给pair2字符数组
for(i=25;i>=0;i–)
pair2[i]=pair2[i-length];//将pair2中的字符向右移动去重关键词的长度,得到完整的pair2即为与org对比的字符数组
for(i=0;i<length;i++)
pair2[i]=point2[i];
for(i=0;i<26;i++)
printf("%c “,pair2[i]);
printf(”\n");
scanf("%s",code);//输入明文
length=strlen(code);
for(i=0;i<length;i++)
{
for(j=0;j<26;j++)
{
if(code[i]==org[j])
{code[i]=pair2[j];
break;}
}
} //将明文中的字母在org中找出与之对应的下标,根据该下标在pair2中找出相应的密文字符
for(i=0;i<length;i++)
{printf("%c",code[i]);}//将密文输出 ,程序完成
return 0;
}
求解问题!!!怎么使下面代码在VS2017上运行
最新推荐文章于 2023-06-17 09:30:10 发布