以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文,即正向与反向的拼写都一样,例如:adgda。请填空。
#include <string.h>
char *huiwen(char *str)
char *p1,*p2;int i,t=0;
p1=str; p2= (18) ;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--)t=1;break;
if( (19) )return("yes!");
else return("no!");
main()
char str[50];
printf("Input:");scanf("%s",str);
printf("%s\n", (20) );
参考答案:[18] str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)
[19] t==0或!t或t==’\0’
[20] huiwen(’str’)
解析: 本题考查判断回文数的算法。一般情况下,判断回文数是将两个指针或下标变量分别从待检查串的第一个字符和最后一个字符开始相向遍历,同时比较两者是否相等,若直到它们在中间相遇时一直相等,则是回文数,否则不是。函数huiwen()中定义了两个字符指针,p1指向str开始的位置,那么p2就应该指向str的结尾,即str+strlen(p1)-1或str+strlen(str)-1等其他形式。在for循环中,比较p1和p2的值,并递增、递减两个指针。若两值不同,则标志t赋值为1,且跳出循环。所以最后的if语句应该是对t进行判断,若t为0时才输出“yes!”,所以应填t==0或!t等其他形式。在主函数中,最后应该输出huiwen()函数的返回结果,所以应填huiwen(str)。