c语言编译---递归倒置字符数组

来源:百度知道 编辑:UC知道 时间:2024/06/15 16:38:37
Description

完成一个递归程序,倒置字符数组。并打印其实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分

Input

一行,包含一个整数和一串字符,之间用一个空格隔开。其中整数表示字符数组长度(<=100)。

Output

若干行,前面的几行表示在求解过程中,打印字符数组的变化情况。
之后空一行,然后在最后一行打印倒置后该数组的各个元素。

Sample Input

5 abcde

Sample Output

ebcda
edcba

edcba

Hint

样例输入2:
1 a

样例输出2:

a
能不用指针么?还没有学,谢谢……

#include<stdio.h>
#include<string.h>
int rev(char *s,int min,int max)
{ char temp;
if(min>=max) return 1;
else
{ temp=s[min]; s[min]=s[max]; s[max]=temp;
printf("%s\n",s);
rev(s,min+1,max-1);
}
return 0;
}

void main()
{ char str[100];
int count=0,n;
printf("\ninout:");
scanf("%d %s",&n,str);
rev(str,0,strlen(str)-1);
printf("\n最终结果:%s\n",str);
}

#include<stdio.h>

main()
{
int n,a[100];
scanf("%d %s",&n,&a);
f(a,n,0);
system("pause");
}

f(char *a,int n,int i)
{
char c;
if(i>=n/2||n==1)printf("\n\n%s\n\t",a);
else{
c=a[i];a[i]=a[n-i-1];a[n-i-1]=c;
i++;
printf("\n%s",a);
f(a,n,i);