15. 用遞歸函數(shù)檢查給定的字符串是否是回文字符串(boyyob,obo類)
/*用遞歸函數(shù)檢查給定的字符串是否是回文字符串*/
#include <stdio.h>
/*聲明常量SIZE存儲字符串長度,值為50*/
# define SIZE 50
/*聲明函數(shù)isPalindrome(char[],int n)檢驗
*給定的字符串是否是回文字符串
*/
int isPalindrome(char[],int n);
main()
{
char str[SIZE];
int n=0,i=0;
printf("請輸入字符串,以回車結(jié)束:\n");
/*先存入第一個字符*/
scanf("%c",&str[0]);
/*讀取字符直到遇到換行符為止*/
while(str[i]!='\n')
{
scanf("%c",&str[i+1]);
i=i+1;
n=n+1;
}
if(isPalindrome(str,n))
{
printf("該字符串是回文字符串。\n");
}
else
{
printf("該字符串不是回文字符串。\n");
}
return(0);
}
/*定義函數(shù)isPalindrome(char[],int n)檢驗
*給定的字符串是否是回文字符串
*/
int isPalindrome(char str[],int n)
{
int i;
/*當字符串位數(shù)少于兩位時停止判斷*/
if(n>=2)
{
/*判斷首尾字符是否相同*/
if(str[0]!=str[n-1])
return 0;
else
{
/*去掉首尾字符以便繼續(xù)判斷*/
for(i=0;i<=n-2;i++)
{
str[i]=str[i+1];
}
str[n-2]='\0';
return isPalindrome(str,n-2);
}
}
else
return 1;
}