完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入
字符数组长度及该数组
输出
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
5 abcde
样例输出
ebcda edcba edcba
这道题我们可以用数组存储输入的字符串,然后设置两个变量来确定数组的第一个元素下标和最后一个元素下标,使用循环来进行遍历交换,从而实现字符倒置,代码如下:
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
char a[n];
char b;
getchar();
for(int i=0;i<n;i++)
scanf("%c",&a[i]);
int x=0;
int y=n-1;
while(x<y)
{
b=a[x]; //交换元素
a[x]=a[y];
a[y]=b;
x++;
y--;
for(int j=0;j<n;j++)
{
printf("%c",a[j]);
}
printf("\n");
}
if(n!=1)
{
printf("\n");
for(int j=0;j<n;j++)
{
printf("%c",a[j]);
}
}
else
printf("\n%c",a[0]); //如果是一个字符,则直接打印,要注意格式
}