C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因

2024-12-02 10:30:39
推荐回答(3个)
回答(1):

已修改,看注释
#include
int main()
{
char a[20],b[20],c[50],*p1,*p2,*p3;
p1=a,p2=b,p3=c;
gets(a);
while(*p1)
{
*p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b
p1++;
p2++;
}
*p2='\0'; //串结束符
p2=b ; //p2重新指向b的开始位置
while(*p2)
{
*p3 = (*p2)-3; //对b中的字符串解密存入数组c
p3++;
p2++;
}
*p3='\0';
puts(a); //puts是输出一个串
puts(b);
puts(c);
return 0;
}

回答(2):

错误比较多。讲几个主要的。
第一个while循环
*(p1++)+=3;这个是把a数组里的元素取出来加上3,然后又写入a数组了,没有写入b数组。
第二个和第三个while循环
puts是输出字符串,不是单个字符输出,单个字符输出是putchar
我改了一下,你看看。

#include
void main()
{
char a[20],b[20],c[50],*p1,*p2,*p3;
p1=a,p2=b,p3=c;
gets(a);
while(*p1)
{
*p2=*p1+3;
p1++;
p2++;
}
*p2='\0';
p2=b;
while(*p2)
{
*p3=*p2-3;
p2++;
p3++;
}
*p3='\0';
puts(a);
puts(b);
puts(c);
}

回答(3):

把这句p2=p1;改为*(p2++)=p1;你试试看