/**
*输入字符串a1,a2,a3,...,an
*输出字符串An,a1,An-1,a2,...A1,an
*递归法实现
**/
#include<stdio.h>
#include<string.h>
char upper(char c)
{
return (c-'a'+'A');
}
/*
递归法1
*/
void printString(char str[],int n,int i)
{
if(i < n)
{
printf("%c%c",upper(str[n-1-i]),str[i]);
printString(str,n,i+1);
}
}
/*
递归法2
*/
void printString1(char str[],int n,int i)
{
if(n>=1)
{
printf("%c%c",upper(str[n-1]),str[i]);
printString1(str,n-1,i+1);
}
}
/*
非递归方法1
*/
void printString2(char str[],int n)
{
for(int i = 0; i < n; i++ )
{
printf("%c%c",upper(str[n-i-1]),str[i]);
}
}
/*
非递归方法2
*/
void printString3(char str[])
{
int n = strlen(str);
printf("%d\n",n);//n=5
for(int i = 0; i < n; i++ )
{
printf("%c%c",upper(str[n-i-1]),str[i]);
}
}
int main()
{
//char str[] = {'a','b','c','d','e','\0'};
char str[] = "abcde";
printString(str,5,0);
printf("\n");
printString1(str,5,0);
printf("\n");
printString2(str,5);
printf("\n");
printString3(str);
printf("\n");
return 1;
}