函数check用来判断字符串s是否是“回文”(顺读和倒读都一样的字符串为“回文”,如abeba)。是则函数返回值1,否则返回值0,请填空。 int check(char *s) { char *p1,*p2;int n; n=st

admin2010-01-10  32

问题 函数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-1 p1<p2

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

最新回复(0)