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