有人会这个吗,可以讲一下吗
#include<stdio.h>
int main()
{
char s[]="monkey",*p1,*p2,c;
p1=p2=s;
while(*p2) p2++;
p2--;
while(p2>p1)
{c=*p1,*p1++=*p2;*p2--=c;
}
printf("%s",s);
}
c
有人会这个吗,可以讲一下吗
#include<stdio.h>
int main()
{
char s[]="monkey",*p1,*p2,c;
p1=p2=s;
while(*p2) p2++;
p2--;
while(p2>p1)
{c=*p1,*p1++=*p2;*p2--=c;
}
printf("%s",s);
}
c
收起
解释如下,供参考:
#include<stdio.h>
int main()
{
char s[] = "monkey", * p1, * p2, c;
p1 = p2 = s; //将 p1 p2 指针指向字符串 s 的首地址,即:*p1 = *p2 = 'm'
while (*p2) p2++; //将 p2 指针移动到字符串 s 的尾部即:*p2 = '\0'
p2--; //将 p2 指针退回一格,指向字符串 s 的 'y'字符上,即 *p2 = 'y'
while (p2 > p1)
{
c = *p1, * p1++ = *p2; *p2-- = c;//循环进行 将 p1 指向的字符 与 p2 指向的字符互换,每交换一次,p1++ p2-- ,循环到 p2 <= p1 时结束退出循环
} //第一次:m 与 y 交换 第二次:o 与 e 交换
//第三次:n 与 k 交换 第四次:p2 < p1 循环条件不满足,退出循环
printf("%s", s); //输出交换后的字符串:yeknom
}
报告相同问题?