中易网

C语言 用递归法把字符串倒置

答案:2  悬赏:0  
解决时间 2021-03-22 19:44
#include
void fun(char s[],int l,int h)
{
char t;
if( l>h) return;
else
{

fun(空);
t=s[l];s[l]=s[h];s[h]=t;
}
}
最佳答案
void recur(char *c,int k){
char tmp;
if(k>1){
recur(c+1,k-2);
tmp=c[0];
c[0]=c[k-1];
c[k-1]=tmp;
}
}
int main()
{
char *c="abcdefg";
int k=strlen(c);
recur(c,k);
puts(c);
getch();
}
全部回答
只告诉你思路,自己写代码。 1. 为简单,弄个足足够大的字符数组 因为整数最大是9还还是10个数了,忘了,你可以申请数组长度11或者更大都行。 申请两个。一个存倒序,一个存正序。 2. 在while循环中,首先对整数除以10求余数,c语言是%,这样最后一个数字就出来了,+‘0’ 或者|0x30,得到相应数字的ascii码,其实就已经把这个数字转成字符了,存到数组里。 3. 然对整数反复除以10, c语言是(/),取整,方法很简单,直接把/后的结果=一个整形变量,直接就是取整了,否则调用取整函数也行,那样麻烦。这样,最后一位数字被砍掉,因为第2部已经处理过它了。 4. 反复上面步骤,循环,直到最后一个数字,(判断条件为%10的余数为0), 说明所有数字处理完了,循环终止,在这中间过程最后有个计数器,计下你共存了多少个数,做为第5步的长度。 5. 由于这时候得到的数组是倒的,也就是从最后一个数字开始存储的,要把它倒过来,存到另外一数组里。这部用一个for循环就搞定。 不好意思,我的答案是非递归的。 递归更简单, #include void convert(int n) {  int i;    if((i=n/10)!=0)     convert(i); putchar(n%10+'0'); } 如果要把结果存到数组里,自己调整一下吧。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么让VB里面的命令按钮在运行后可以随机动
奇乐融怎么样啊,奇乐融p2p理财怎么样?
丝芙兰实体店会员卡.这么帮定管网会员卡?
青岛大学 美术类 文化课和录取情况 安徽省
如何查询宜宾地区有哪些监理单位?
急 狗狗昨晚十点左右开始拉稀一次 早上第一次
蜜蜂靠本能能回到家.哪种动物也有这种本能
作为茶叶加盟店的店长,每天或者每月的工作职
铁三角牌子怎么样?
一字或四五字猜成语
福鼎秦屿特产有哪些
口袋妖怪火红不死机怎么过有垃圾桶的那个道馆
男人最佳创业阶段是什么时候?
我的空中楼阁
南京有哪些学跳舞比较好的地方?
推荐资讯
谁有k.will 说 干什么呢 的MP3资源,求打包
请问三绕组变压器的“Yyd”连接是不是高压侧
家兔身上掉毛,怎么回事啊
无锡市锡山去东亭镇云林幼儿园报名费多少
急求~!河南省信阳市罗山县档案局的地址和网
led护栏管控制器八个头的怎么接
落地晾衣架哪种好?x型的好呢还是双杆的好呢?
炉石传说怎样申请不了账号
方程组x+3y+7z=316,x+4y+10z=362,求x+y+z的
蓝宝石HD6670 1G D5和HD6770 512M D5 性能上
快递为什么不能寄瓶装水
找首歌直播上听的,期间有女声一直唱啦啦啦…
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?