请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出″YES″,否则返回0,主函数中输出″NO″。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 注意:请勿改动主函数m

admin2019-04-14  12

问题 请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出″YES″,否则返回0,主函数中输出″NO″。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <stdio.h>
#define N 80
int fun(char * str)
{

}
main()
{
char s[N];
FILE * out:
char * test[]={″1234321″,″123421″,″123321″,″abcdCBA″};
int i;
printf(″Enter a string:″);
gets(s);
printf(″\n″);
puts(s);
if(fun(s))
printf(″YES\n″);
else
printf(″NO\n″);
/* * * * * * * * * * * * * * * */
out=fopen(″out.dat″,″w″);
for(i=0:i<4;i+ +)
if(fun(test))
fprintf(out,″YES\n″);
else
fprintf(out,″NO\n″);
fclose(out);
/* * * * * * * * * * * * * * * */
}

选项

答案int fun(char *str) { int i,n=0,fg=1; char *p=str; while(*p) /*将指针p置位到字符串末尾,并统计字符数*/ {n+ +;p+ +;} for(i=0;i<n/2;i+ +) /*循环比较字符*/ if(str[i]= =str[n—I—i]); /*相同,什么都不做*/ else {fg=0;break;} /*不同,直接跳出循环*/ return fg; }

解析 判断回文就是将第一个字符与最后一个字符比较,第二个字符与倒数第二个字符进行比较,以此类推,直到中间的字符。如果比较的结果都相同,那么这个字符串就是回文,否则不是。程序中循环语句用来遍历字符串,条件语句用来判断当前字符与对应位置的字符是否相同。
转载请注明原文地址:https://kaotiyun.com/show/U1Rp777K
0

最新回复(0)