问答题
请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出“YES”;否则返回0,主函数中输出“NO”。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意
:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#define N 80
int fun(char *str)
{
}
main()
{
char s[N];
char *test[]={"1234321","123421","123321","abcdCBA"};
int i;
printf("Enter a string:"};
gets(s);
printf("/n/n");
puts(s);
if(fun(s))
printf("YES/n");
else
printf("NO/n");
}
【正确答案】
【答案解析】int fun(char *str)
{
int i,n=0,fg=1;
char *p=str;
while (*p) /*将指针p置位到字符串末尾,并统计字符数*/
{
n++;
p++;
}
for(i=0;i
if(str[i]==str[n-1-i]) ; /*相同,什么都不作*/
else /*不同,直接跳出循环*/
{
fg=0;
break;
}
return fg;
}
[解析] 判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,依此类推,直到中间的字符,如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。