当前位置: 代码迷 >> C语言 >> [字符串处理的函数]这题的思路???
  详细解决方案

[字符串处理的函数]这题的思路???

热度:104   发布时间:2006-01-12 13:56:00.0
[字符串处理的函数]这题的思路???
#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

为什么只有A和G啊

哪位大大能不能把他运行的思路写下。。。。。小弟实在是看不懂这个

[此贴子已经被作者于2006-1-12 13:56:36编辑过]

搜索更多相关的解决方案: 函数  思路  字符  

----------------解决方案--------------------------------------------------------

当你第一次循环的时候,s=*p++,s=a[0]=A了,p1向后移一位到a[1],*p1=*p2--,也就是a[1]=G了,p2向前移了一位,*p2=s,也就是a[5]=A,第一次循环也就变成了:AGCDEAG

当你第二次循环的时候,s=*p++,也就是s=a[1]=G了,p1向后移一位到a[2],*p1=*p2--,也就是a[2]=a[5]=A了,p2向前移一位,*p2=s,也就是a[4]=G.第二次循环也就变成了:AGADGAG.

当你第三次循环的时候,s=*p1++,也就是s=a[2]=A了,p1向后移一位,*p1=*p2--,a[3]=a[4]=G了,p2向前一位,*p2=s,也就是a[3]=A了,第三次循环也就变成了:AGAAGAG

当再次进入循环的时候,由于p1=p2,不符合条件,退出循环.

[此贴子已经被作者于2006-1-12 14:35:00编辑过]


----------------解决方案--------------------------------------------------------

在fun()内部处理a[]过程:
初次循环:s='A',p1=a+1,a[1]='G',p2=a+5,a[5]='A' 即 AGCDEAG
二次循环:s='G',p1=a+2,a[2]='A',p2=a+4,a[4]='G' 即 AGADGAG
三次循环:s='A',p1=a+3,a[3]='G',p2=a+3,a[3]='A' 即 AGAAGAG
此时,p1=p2跳出循环。
----------------解决方案--------------------------------------------------------

呵呵,我说刚才怎么IE不动了,原来有大哥正在发。
本来正在看单位的工资册,看见这个问题费了点儿时间,没想到还没赶上沙发?!
浪费脑细胞了。

[此贴子已经被作者于2006-1-12 14:47:35编辑过]


----------------解决方案--------------------------------------------------------




---------------------------------------
A B C D E F G
g *p2
A

A G C D E A G
s=*p1++; *p1=*p2--; *p2=s;

s = a -> *p1++ = b

*p1=*p2--; -> b = g -> *p2-- = f

*p2=s; -> f =a

这样就清楚多了。。呵呵。。。谢过大大


----------------解决方案--------------------------------------------------------


呵呵。如果考试也考这么难就砸了。。。再次谢过!!!
----------------解决方案--------------------------------------------------------
  相关解决方案