蓝桥杯试题集试题总汇(C++)
问题描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
字符数组长度及该数组
输出格式
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1
5 abcde
Sample 2
1 a
样例输出
Sample 1
ebcda
edcba
edcba
Sample 2
a
参考代码
#include <iostream>
using namespace std;
int n;//记录字符数组的大小
void exchange(char a[],int m)//自定义倒置函数
{
if(m>=n/2)
return ; //递归到中间停止
//调换字符
char ch=a[m];
a[m]=a[n-m-1];
a[n-m-1]=ch;
//打印字符数组的变化情况
for(int i=0; i<n; i++)
cout<<a[i];
cout<<endl;
exchange(a,m+1);//递归
}
int main()
{
cin>>n;
char str[n];
for(int i=0; i<n; i++)
cin>>str[i];
exchange(str,0); //从第一个字符开始
//打印该数组的各个元素,注意要求空一行之后打印
cout<<endl;
for(int i=0; i<n; i++)
cout<<str[i];
return 0;
}