以下程序中函数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;bteak;} if( 【19】 )return("yes!"); else return("no!"); } main() { char sb[50]; printf("Input:"); scanf("%s",str); ptintf("%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和p2,并让p1指向sb的开始位置,所以p2应该指向str的尾部,即&str[strlen(str)-1]或写成 str+strlen(str)-1或者其他等价形式。然后使用一个循环,循环str的长度的一半次数,比较p1和p2的内容,并分别递增和递减这两个指针。若有不同,则让标志t为1,并跳出循环。所以最后一个if语句应该为判断标志t是否为1,即应该填t==0或者其它等价形式。在主函数中,应该输出huiwen()函数的返回结果,即最后一空应该填huiwen(str)。