3 回答

TA貢獻1801條經驗 獲得超16個贊
#include <stdio.h>
int foo(char *str)
{
char *p=str;
while(*p) p++;
p--;
while(str<p)
{
if(*p!=*str)
return 0;
p--;
str++;
}
return 1;
}
main()
{
char s[80] ;
printf("Enter a string: ") ;
gets(s) ;
printf("\n\n") ;
puts(s) ;
if(foo(s))
printf("YES\n") ;
else
printf("NO\n") ;
}

TA貢獻1821條經驗 獲得超5個贊
#include<stdio.h>
//如果是回文,返回1,否則返回0
int foo(const char *pch)
{
const char *pEnd=pch; //pEnd指向字符串頭
while(*pEnd !='\0') //將pEnd指針后移,直到字符串尾,即\0字符
pEnd++;
pEnd--; //回退一個,不比較字符'\0'
while(pch<pEnd)
if (*pch++ != *pEnd--) //頭指針后移,尾指針前移,逐個比較,直到pch>=pend,也就是兩個指針相交了,比較完了
return 0; //如果有兩個不等,說明不是回文,返回0
return 1;
}
int main()
{
char *str1 = "abcdefgfedcba";
char *str2 = "abcdefgfedcbax";
if (1 == foo(str1))
{
printf("YES\r\n");
}
else
printf("NO\r\n");
if (1 == foo(str2))
{
printf("YES\r\n");
}
else
printf("NO\r\n");
return 0;
}

TA貢獻1848條經驗 獲得超6個贊
int foo(char *str)
{
char* start = str;
char* end = str + strlen(str);
while(start < end)
{
if(*start != *end)
return 0;
start++;
end--;
}
return 1;
}
添加回答
舉報