请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES:否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如:字符串LEVEL是回文,而字符串123312就不是回文。
注意;部分源程序已存在文件test26_.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
文件test26_2.cpp的内容如下:
#include<iostream.h>
#include<stdio.h>
#define N 80
int fun(char*str)
void main()
char s[N];
cout<<"Enter a string:"<<endl;
getss);
cout<<"\n\n";
puts(s);
if(fun(s))
cout<<"YES\n";
else
cout<<"NO\n";
参考答案:
int fun(char*str)
{int i,n=O,fg=1;
char*p=str;
while(*p)
{n++; p++;}
for(i=0;i<n/2;i++)
if(str[i]==str[n-1-i]) ;
else
{fg=O;break;}
return fg;
}
解析:解答本题的主要思路是:首先要利用循环中指针的移动来求得字符串的长度n,然后用一个for循环依次取得数组中的前半部分元素,用取得的前半部分内的元素逐个与后半部分内的对应位置的元素进行比较,如果相同,不做任何工作,接着取下一个元素,继续比较:如果不相同,可以判断该字符串肯定不是回文,就给标志变量fg赋值0(fg的初始值为1)。最终把fg作为函数的返回值返回(fg值为1表明是回文,fg值为0表明不是回文)。