问题描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
字符数组长度及该数组
输出格式
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1 5 abcde Sample 2 1 a
样例输出
Sample 1
ebcda
edcba
edcba
Sample 2
a
#include <stdio.h> #include <stdlib.h> void swap(char *str1,int start,int end){ char temp; temp = str1[start]; str1[start] = str1[end]; str1[end] = temp; } void Reverse_And_Print(char *str1,int start,int end){ if(start == end){ printf("%s ",str1); return; } else{ swap(str1,start,end); printf("%s ",str1); Reverse_And_Print(str1,start+1,end-1); } } int main(){ char str[7]; char *str1; int num,num1; while(scanf("%s",str)!= EOF){ scanf("%d",&num); scanf("%d",&num1); str1 = (char *)malloc(sizeof(char)*(num1+1)); scanf("%s",str1); printf("%s %d ",str,num); Reverse_And_Print(str1,0,num1-1); } return 0; }
//注:官网给的测试数据和样例说明冲突,因而提交上去会显示Runtime Error