生无涯

吾生也有涯,而知也无涯,以无涯随有涯,乐以忘忧,生亦无涯矣www.cnblogs.com/shengwuya
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

a program a day 6

Posted on 2010-10-02 23:57  生无涯  阅读(166)  评论(1编辑  收藏  举报

/**
*输入字符串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;
}