题目:判断一个句子是否回文
#include <stdio.h>
#include <string.h>
_Bool check(char s[])
{
if (s == NULL) {
return 0;
}
int i, j;
i=0, j=(int)strlen(s)-1;
while (i<j) {
if (s[i] != s[j]) {
return 0;
}
i++;
j--;
}
return 1;
}
int main(int argc, const char * argv[])
{
char s[100];
//= "dasad";
while (scanf("%s", s) != EOF) {
printf("%s ", s);
printf(check(s) ? "句子回文\n": "句子不回文\n");
}
return 0;
}
以上代码只能够检测字母字符串是否回文,不能检测中文,一下代码将提供检测代码的方法,但是还是有一点小瑕疵,比如你如果输入“回车车回”,检测后在输入“回”,就不能正确检测,而且输出来的还是“回车车”,还在解决这个问题。
#include <stdio.h>
#include <string.h>
_Bool check(char s[])
{
int cl, tl, sl, i=0, j;
_Bool flag;
cl=(int)strlen("我");
j=sl=(int)strlen(s);
tl=cl;
while (i+cl <= cl-tl) {
j=cl-tl;
flag=1;
while (i<tl && s[i]==s[j]) {
i++;
j++;
flag=0;
}
if (flag) {
return 0;
}
tl += cl;
}
return 1;
}
int main()
{
char s[100];
while (scanf("%s", s) != EOF) {
printf("%s ", s);
printf(check(s) ? "句子回文\n": "句子不回文\n");
}
return 0;
}