本題要求編寫函數,判斷給定的一串字符是否為“回文”。所謂“回文”是指順讀和倒讀都一樣的字符串。如“XYZYX”和“xyzzyx”都是回文。
函數接口定義:
bool palindrome( char *s );
函數palindrome
判斷輸入字符串char *s
是否為回文。若是則返回true
,否則返回false
。
裁判測試程序樣例:
#include <stdio.h>
#include <string.h>
#define MAXN 20
typedef enum {false, true} bool;
bool palindrome( char *s );
int main()
{
char s[MAXN];
scanf("%s", s);
if ( palindrome(s)==true )
printf("Yes\n");
else
printf("No\n");
printf("%s\n", s);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例1:
thisistrueurtsisiht
輸出樣例1:
Yes
thisistrueurtsisiht
輸入樣例2:
thisisnottrue
輸出樣例2:
No
thisisnottrue
#include <stdio.h> #include <string.h> #define MAXN 20 typedef enum {false, true} bool; /*typedef在計算機編程語言中用來為復雜的聲明定義簡單的別名。 這里typedef enum{0,1} bool;就是對枚舉型類型enum{0,1}定義別名為bool, 定義之后,你若想定義一個enum{0,1}類型的枚舉變量,則可以簡單的bool a;即可。 */ bool palindrome( char *s ); int main() { char s[MAXN]; scanf("%s", s); if ( palindrome(s)==true ) printf("Yes\n"); else printf("No\n"); printf("%s\n", s); return 0; } /* 你的代碼將被嵌在這里 */ bool palindrome( char *s ) { int i,n; n=strlen(s);//字符串長度 if(n%2==1)//如果長度為奇數的話 { for(i=0;i<(n-1)/2;i++)//前一半長度 { if(s[i]==s[n-1-i])//第一個等於最后一個,第二個等於倒數第二個 continue; else return false; } } else//如果長度為偶數的話 { for(i=0;i<n/2;i++)//前一半長度 { if(s[i]==s[n-1-i])// continue; else return false; } } return true; }