C语言题目!!求大神!! 求过程!!

C语言题目!!求大神!!求过程!!... C语言题目!!求大神!!
求过程!!
展开
 我来答
emalwb
2014-03-06
知道答主
回答量:8
采纳率:0%
帮助的人:1.1万
展开全部
函数f(p,t)中,前面两行是把p和t所指向的内容互换,
也就是说,第一次执行的时候是把c和e互换,
然后s指指针向后移动,也就是指向f所在单元,t指指针向前移动,也就是指向b,
判断s指向的内容是否为空,此时s不为空,所以继续执行f(p,t),这是递进。
以此类推,s逐渐后移,t逐渐前移,直到s指向g所在单元后面那个单元,程序不再递进,开始返回。
最后的结果就是把字符串的顺序互换。
在这里,把f(p,t)分解开来就是:
f(p,t)
{
char k;
k=*p;*p=*t;*t=k;
s++;t--;
k=*p;*p=*t;*t=k;
s++;t--;
k=*p;*p=*t;*t=k;
s++;t--;
}
追问
一开始P不是e吗p-2不是c吗互换之后动指针不久两个都变成d了吗
追答
最开始,e的地址是str+4;c的地址是str+2
指针存放的是地址,不是值。
所以p的值是str+4,t的值是str+2
互换的语句是“k=*p;*p=*t;*t=k;”

这里,*p等于地址str+4中的值,就是e,不是str+4

所以是str+4与str+2中的值互换,p本身的值不变,仍然是str+4。
随后p++,那么p就变为了str+5,也就是指向了f,同理t的值变为str+1,指向了b
百度网友c67303967
2014-03-06 · TA获得超过192个赞
知道答主
回答量:92
采纳率:0%
帮助的人:37.4万
展开全部
我再修改一下答案,看了你的解释后,我想通了,就是一直调用函数f,
交换第一次后就是abedcfg,
交换第二次就是afedcbg,
第三次就是gfedcba。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-06
展开全部
是不是选C 呀
更多追问追答
追问
是B
追答
涉及到一个递归调用的 问题,他那个会一直调用f(s,t)这个函数知道最后结束,
字符串的存储最后一位是/0 结束的
会调用3次,每次调用交换一下值,所以结果选B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式