A-A+

函数check用来判断字符串s是否是“回文”(顺读和倒读都一样的字符串为“回文” 如abeb

2022-08-12 18:49:13 问答库 阅读 197 次

问题详情

函数check用来判断字符串s是否是“回文”(顺读和倒读都一样的字符串为“回文”,如abeba)。是则函数返回值1,否则返回值0,请填空。 int check(char *s) { char *p1,*p2;int n; n=strlen(s); p1=s; p2=【 】; while(p1<p2) { if (*p1 != *p2) break; else {p1++;p2--;} } if(【 】)return 0; else return 1; }


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:s+n-1p1<p2
判断是否“回文”字符串,应该使用两个字符型指针,一个从前往后遍历字符串,另一个从后往前遍历字符串,直到它们中途相遇,如果每次两个指针所指的字符都相同,则为“回文”字符串。程序中已经使p1=s,即指向字符串的第一个字符了,所以p2应该指向s的最后一个字符,故第一空应填s+n-1。比较两个指针时,如果有一次不相同,则跳出循环,因为此时已可肯定不是“回文”字符串。如果是while循环的条件p1<p2不满足时自然结束的循环,则每次比较都是相同的,两个指针是中途相遇了才结束比较。两种情况的区别就是pl<p2是否成立。故第二空应该填p1<p2。

考点:回文,字符串