要求
请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:VES;否则返回0,主函数中输出N0。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文
解题思路
回文(Palindrome)是指一个诗句、短语、单词、数字或其他字符序列,其从前往后和从后往前是完全相同的。即,这个序列从中心分开,两边互为镜像,或者说在左右两侧或上下两侧是对称的。这个概念不仅限于文字,也可以应用于数字、日期、图形等。
解题思路:由于回文是指顺读和倒读是一样的字符串,所以可以以中间字符为对称点,通过循环判断字符串中
代码
#include <stdio.h>
#include <string.h>
#define N 80
int fun(char *str)
{
int i =0;
int j = strlen(str);
for(i=0;i<j/2;i++)
{
if(str[i]!=str[j-i-1])
{
return 0 ;
break;
}
}
return 1 ;
}
main()
{ char s[N] ;void NONO ();
printf("Enter a string: ") ; gets(s) ;
printf("\n\n") ; puts(s) ;
if(fun(s)) printf(" YES\n") ;
else printf(" NO\n") ;
NONO() ;
getchar();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ;
int i ; char s[N] ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s) ;
if(fun(s)) fprintf(wf, "%s YES\n", s) ;
else fprintf(wf, "%s NO\n", s) ;
}
fclose(rf) ; fclose(wf) ;
}