一个c问题,高手帮我看看我怎么错了,急!!
43 子串反向——递归
成绩: 10 / 折扣: 0.8
请编写一个递归函数 reverse(char str[], int start, int end ) ,该函数的功能是将串 str 中下标从 start 开始到 end 结束的字符颠倒顺序。假设 start 和 end 都在合理的取值范围。
例如:
执行前:str[]="0123456";start=1 ;end=4
执行后:strr[]="0432156"
要求在该函数中不使用新的数组,没有循环。
这是题目,然后是我的程序(主要是一种输入不对,就是例如输入0123456,start为0,end为10,希望的输出是6543210,可是我这个输出不来,望高手指点,麻烦啦)
#include<stdio.h>
char *reverse(char str[],int start,int end)
{ char tem;
if(start>=end||str[start+1]>'9'||str[start+1]<'0')
return(str);
else
{ tem=str[start];
str[start]=str[end];
str[end]=tem;
reverse(str,start+1,end-1);
}
if((str[start+1]<='9'&&str[start+1]>='0')&&(str[end]>'9'||str[end]<'0'))
reverse(str,start,end-1);
}
int main()
{
char str[100];
int start,end;
gets(str);
scanf("%d%d",&start,&end);
reverse(str,start,end);
printf("%s\n",str);
return 0;
}