怎样用递归法使字符串倒序
各位高手:怎样用递归法使字符串倒序? 字符串倒序干吗要用递归呢?今晚没时间讨论了,学校要关灯了,明天再来看,呵呵。。 #include<iostream.h>
#include<stdio.h>
void reverse(char *a,int i,int n)
{
if(i==n)
cout<<a[i]<<"\t";
else
reverse( a, i+1, n);
cout<<a[i-1]<<"\t";
}
int main()
{ int n;
cout<<"请输入字符数组长度!"<<endl;
cin>>n;
char *p=new char[n];
gets(p);
reverse(p,1,n-1);
cout<<endl;
} #include <stdio.h>
#include <string.h>
void reverse(char *s, int i, int n)
{
if(i == n)printf("%c", s[i]);
else
{
reverse(s, i+1, n);
printf("%c", s[i]);
}
}
int main()
{
char s[100];
scanf("%s", s);
reverse(s, 0, strlen(s)-1);
return 0;
}
e
3楼的有点问题 我的有什么问题?说来听听.. 是有问题啊,运行一下看看 我用动态数组节约空间,所以必须输入字符长度。这不是什么问题。。。 可以for一下取个长度嘛 不然就是“有问题”了 [code]#include <iostream>
using namespace std;
void reverse(string &s, int a, int b)
{
if(a<b)
{
swap(s[a],s[b]);
reverse(s,a+1,b-1);
}
}
int main()
{
string s;
cin>>s;
cout<<"Before reverse:\n"<<s<<endl;
reverse(s, 0, s.length()-1);
cout<<"After reverse:\n"<<s<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
[/code]
用GCC调过,VC没试过,可能会有问题 相当棒,谢谢各位 [code]
void reverse(char* arr,int size_a,const char* pat,int size_p)
{
if(size_a == size_p) arr[size_a-size_p-1] = pat[size_p];
else
{
arr[size_a-1-size_p] = pat[size_p];
reverse(arr,size_a,pat,size_p+1);
}
}
arr[strlen(pat)] ='\0';
[/code]
我只是菜鸟
#include<iostream>#include<string.h>
using namespace std;
int main()
{
int t;
char str[1024];
gets(str);
t=strlen(str); //求字符串长度
int n=t-1;
for(int j=0;j<n;j++,n--) //进行转换 实现字符反转
{
char t;
t=str1[j];
str1[j]=str1[n];
str1[n]=t;
}
puts(str);
return 0;
}
页:
[1]
