解密加密.c
/*
*设计一个加密和解密的算法,在对一个指定的字符串
*加密之后,利用解密函数能够对密文解密,显示明文
*信息。加密的方式是将字符串中每个字符加上它在字符
*串中的位置和一个偏移值5.第一个字符“m”在字符串
*中的位置为0,那么它对应的密文是“'m'+0+5”,即r.
*依据题目信息。首先是加密函数
char *jm(char *str,int i,int m)
{
for(i=0;i<m;i++)
{
s[i]=s[i]+i+5;
}
return str;
}
再者,解密函数
char *jm1(char *str,int i,int m)
{
for(i=0;i<m;i++)
{
s[i]=s[i]-i-5;
}
return str;
}
main()
{
char s[100],int j,int n;
printf("你要输入的字符串字符的个数\n");
scanf("%d",&n);
printf("输入字符\n")
for(j=0;j<n;j++)
{
scanf("%c",s[j]);
}
jm(s,j,n);
for(j=0;j<n;j++)
{
printf("%c",s[j]);
}
jm1(s,j,n);
for(j=0;j<n;j++)
{
printf("%c",s[j]);
}
}
*/
#include <stdio.h>
char *jm(char *str,int i,int m)
{
for(i=0;i<m;i++)
{
str[i]=str[i]+i+5;
}
str[m]='\0';
return str;
}
/*再者,解密函数*/
char *jm1(char *str1,int k,int p)
{
for(k=0;k<p;k++)
{
str1[k]=str1[k]-k-5;
}
str1[p]='\0';
return str1;
}
main()
{
char s[100],q[100];
int j;
int n;
printf("你要输入的字符串字符的个数\n");
scanf("%d",&n);
printf("输入字符\n");
for(j=0;j<n;j++)
{
scanf("%c",&s[j]);
}
jm(s,j,n);
printf("加密后的字符串\n");
for(j=0;j<n;j++)
{
printf("%c",s[j]);
q[j]=s[j];
}
printf("\n解密后的字符串\n");
jm1(q,j,n);
printf("%c",q[0]);
for(j=0;j<n;j++)
{
printf("%c",q[j]);
}
printf("\n");
}
运行后解密函数运行完后怎么老是少一个字符。
c 算法 加密 解密
[解决办法]
打印一下s[0],看看里面存的是什么
改成scanf("%d\n",&n);接收掉一个回车就好了
[解决办法]