a program a day 6
时间:2010-10-02 来源:生无涯
/**
*输入字符串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,此方法不对,不能正确判断str的大小??
*/
/*void printString3(char str[])
{
int n = strlen(str);
printf("%d",n);
for(int i = 0; i < n; i++ )
{
printf("%c%c",upper(str[n-i-1]),str[i]);
}
}*/
int main()
{
char str2[] = {'a','b','c','d','e'};
char str1[] = {'a','b','c','d','e'};
printf("%d\n",strlen(str2));
printf("%d\n",strlen(str1));
//为什么str的大小不定?
char str[] = {'a','b','c','d','e'};
printString(str,5,0);
printf("\n");
printString1(str,5,0);
printf("\n");
printString2(str,5);
printf("\n");
/* printString3(str);
printf("\n");*/
return 1;
}