C语言问题C语言问题

利用指针做函数参数,设计一函数对字母进行简单加密,把当前的小写字母变成对应的大写字母后面的第三个字母,如最后三个字母x、y、z分别变成字母A、B、C;把当前的大写字母变成对应小写字母前面的第3个字母,如前面三个字母A、B、C应分别变成字母x、y、z;其他字符不变。再设计一函数把加密字符还原。
我的源代码段:
输入xyz只输入一个A,出现了什么问题?

char a[100],b[100];
int i,*p,j=0;
gets(a);
p=a;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='x'||a[i]=='y'||a[i]=='z')
{
a[i]=a[i]-55;
b[j++]=*(p+i);
}
else
{
a[i]=a[i]-29;
b[j++]=*(p+i);
}
}
puts(b);

没问题啊,我把你定义的指针变量p换成了char类型,不然会报错

#include<stdio.h>
#include<string.h>
int main(){
char a[100],b[100],*p;
int i,j=0;
gets(a);
p=a;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='x'||a[i]=='y'||a[i]=='z')
{
a[i]=a[i]-55;
b[j++]=*(p+i);
}
else if(a[i]=='A'||a[i]=='B'||a[i]=='C')
 {
a[i]=a[i]+55;
b[j++]=*(p+i);
    }
 else
   {
 a[i]=a[i]-29;
 b[j++]=*(p+i);
 }
}
puts(b);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答