69,371
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int k0,k1;
int encryption(char *p,int len){
int count = 0;
int a;
char j;
while(count<len){
a=int(*p)-65;
j=(k0+a*k1)%26;
p++;
printf("%c",j);
count++;
}
return 0;
}
int chance(char *p,int len){
int sum,i,l,count = 0;
float chance[26];
while(count<len){
sum++;
l=int(*p)-65;
chance[l]++;
p++;
count++;
}
for(i=0;i<26;i++){
chance[i]=chance[i]/sum;
printf("%c的出现概率是%d",char(i+65),chance[i]);
}
return 0;
}
int prime()
{
if(k1%2==0){
return 0;}
if(k1%13==0){
return 0;}
else{
return 1;}
}
int main(){
char a;
int i,len;
printf("请给k1赋值,k1必须与26互素\n");
scanf("%d",&k1);
i=prime();
if(i=1){
printf("请给k0赋值\n");
scanf("%d",&k1);
printf("请输入明文,无标点无空格\n");
scanf("%s",&a);
len=strlen(&a);
encryption(&a,len);
chance(&a,len);
}
system("pause");
return 0;
}