#include<stdio.h> #include<string.h> void fun (char*w,int m) {char s,*p1,*p2; p1=w;p2=w+m-1; while(

#include<stdio.h>#include<string.h>voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;w... #include<stdio.h>
#include<string.h>
void fun (char*w,int m)
{char s,*p1,*p2;
p1=w;p2=w+m-1;
while(p1<p2)
{s=*p1++;*p1=*p2--;*p2=s;}
}
main()
{char a[]="ABCDEFG";
fun(a,strlen(a));puts(a);
}
答案为什么是AGAAGAG
展开
 我来答
JialiangLCL
2016-12-08 · TA获得超过424个赞
知道答主
回答量:100
采纳率:33%
帮助的人:6.5万
展开全部

初始:p1 指向数组中第一个字符A,p2指向数组中最后一个字符G
开始循环
第一次:
s得到p1指向的值A后p1向后移一位,指向数组中第二个字符B
p1所指的第二个字符改为p2指向的字符G,p2向前移动一位,指向数组中第六个字符F
p2所指的第六个字符改为s的值A
这次完成后数组值改为:AGCDEAG,p1指向数组第二个字符,p2指向数组中第六个字符
第二次:
s得到p1指向的值G后p1向后移一位,指向数组中第三个字符C
p1所指的第三个字符改为p2指向的字符A,p2向前移动一位,指向数组中第五个字符E
p2所指的第五个字符改为s的值G
这次完成后数组值改为:AGADGAG,p1指向数组第三个字符,p2指向数组中第五个字符
第三次:
s得到p1指向的值A后p1向后移一位,指向数组中第四个字符D
p1所指的第四个字符改为p2指向的字符A,p2向前移动一位,指向数组中第四个字符G(刚刚被改动过)
p2所指的第四个字符改为s的值A
这次完成后数组值改为:AGAAGAG,p1指向数组第四个字符,p2指向数组中第四个字符
循环结束。

jdq_37
2010-12-05 · TA获得超过996个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:952万
展开全部
你的程序相当于下面的程序,我稍稍改了一下,看得更明白点:
#include<stdio.h>
#include<string.h>
void fun (char*w,int m)
{
char s,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<p2)
{
s=*p1;
p1++; //1
*p1=*p2;
p2--; //2
*p2=s;
}
}
main()
{
char a[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
从你的用意上讲,应该是把我注释的1、2两处语句移到循环临结尾处。即:
while(p1<p2)
{
s=*p1;
*p1=*p2;
*p2=s;
p1++; //1
p2--; //2
}
在你原来基础上改,就是改成这样:
while(p1<p2)
{s=*p1;*p1++=*p2;*p2--=s;}

楼主参考
祝你好运!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式