c语言操作问题
#include<stdio.h>
#include<string.h>
void jiami(char c[],int a[]){
for(int i = 0, j = 0; c[j];j++, i = (i + 1) % 8){
c[j]+=a[i];
if(c[j] > 122) {
c[j] -= 90;}
}
}
void jiemi(char c[],int a[]){
for(int i = 0, j = 0; c[j];j++, i = (i + 1) % 8){
c[j]-=a[i];
if(c[j] < 32)
{
c[j] += 90;}
}
}
void xiangdeng(char c[],char b[])
{
c=b;
}
int main()
{
int a[] = {5,7,8,6,4,3,9,2};
char s[50],s1[50];
printf("请输入字符串:");
scanf("%s",&s);
xiangdeng(s1,s);
jiami(s,a);
printf("加密后密文:%s",s);
jiemi(s,a);
if(s1==s)
printf("解密后密文:%s",s);
else
printf("解密错误!");
}
为什么总出现解密错误
没看到你的要求。算法上感觉有问题
122是‘z'的ASCII而90是'A'ASCII码,而A~z中间,对字母来说ASCII是不连续的
所以若是你包含大小写的话,就要考虑这个问题的
另外,你程序有两个基础的错
void xiangdeng(char c[],char b[])
{
c=b;
}
不会改变任何内容(c,b都是实参,在函数中不会改变的)
c语言的字串赋值,只能用strcpy函数
而同样的
if(s1==s)
这个是两个指针的比较,它们永远不可能相等的。
C的字串比较不能用==,要用函数strcmp的
建议楼主卸载重装