
一道c语言题目
程序填空函数revstr(s)将字符串s置逆,如输入的实参s为字符串"abcde",则返回时s为字符串"edcba"。递归程序如下:revstr(char*s){char...
程序填空
函数revstr(s)将字符串s置逆,如输入的实参s为字符串"abcde", 则返回时 s 为字符串"edcba"。递归程序如下:
revstr( char *s )
{ char *p=s, c;
while(*p) p++;
① ;
if(s<p)
{ c=*s;
*s=*p;
② ;
revstr(s+1);
③ ;
}
}
可以解释下吗? 展开
函数revstr(s)将字符串s置逆,如输入的实参s为字符串"abcde", 则返回时 s 为字符串"edcba"。递归程序如下:
revstr( char *s )
{ char *p=s, c;
while(*p) p++;
① ;
if(s<p)
{ c=*s;
*s=*p;
② ;
revstr(s+1);
③ ;
}
}
可以解释下吗? 展开
3个回答
展开全部
① p--
循环while(*p) p++;的作用是指针p指向字符串末尾,指向'\0',而中止循环。
p--,就是再将指针p指向字符串最后一个有效字符。即'\0'前面。
②*p=c
语句系列:c=*s;*s=*p;*p=c ;是经典的数据交换算法,就是将*s(字符串首字符)与*p(指针p指向的字符)交换,c在这里是中间变量。
③ return
处理完整个字符串,逆序操作结束。
功能测试通过了。
循环while(*p) p++;的作用是指针p指向字符串末尾,指向'\0',而中止循环。
p--,就是再将指针p指向字符串最后一个有效字符。即'\0'前面。
②*p=c
语句系列:c=*s;*s=*p;*p=c ;是经典的数据交换算法,就是将*s(字符串首字符)与*p(指针p指向的字符)交换,c在这里是中间变量。
③ return
处理完整个字符串,逆序操作结束。
功能测试通过了。
展开全部
用递归实现翻转
p--
*p='\0'
*p=c
p--
*p='\0'
*p=c
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.p--;
2.*p='\0';
3.*p=c;
我试了,这样可以实现上面功能。
2.*p='\0';
3.*p=c;
我试了,这样可以实现上面功能。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询