7. 判断回文 编写一个函数bool isPalindrome(char* s),判断参数是否是回文,如果是返回1,否则返回0。在

7. 判断回文
编写一个函数bool isPalindrome(char* s),判断参数是否是回文,如果是返回1,否则返回0。在主函数中调用它,判断ptr是否是回文。
8. 构造回文
编写一个函数char* palindrome(char* s),根据参数给出的字符串构造一个回文。在主函数中将ptr作为参数调用它生成回文。
9. 查找字符串
编写一个函数int find(char *s,char *t),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1。
在主函数中调用它:find(ptr, “the”)。
回文:
把相同的词汇或句子,在下文中调换位置或颠倒过来

例如:斗鸡山上山鸡斗

1
#包括中

主(X;的诠释y){

* P1 = X * P2 = Y;

的printf(“交换前:* P1 =%D * P2 =%d的\ N“,* P1 * P2);

P1 = &y;

P2 = &x;

的printf(”交换:* P1 =%D * P2 =%d的\ N“,* P1 * P2);

}

:布尔isPalindrome(字符*){

长度= 0;

INT I = 0;

同时(*(+长度)='\ 0'){

长度+ +;

}
>(<=长<< 2; + +){

(*(+ I)=(S +吉))

返回0;

}

返回1;

}

字符*回文(字符*){

长度= 0;

INT I = 0; />,而(*(+长度)='\ 0'){

长度+ +;

}

=长度;

(长度> = 0长度 - ){

*(+ I * 2长度)= *(长度);

}

*(2 * I +1)='\ 0 '; 返回;

}

(字符*,CHAR * T){

开始= -1;

= 0;
tlength = 0;

温度= -1;

;

(*(T + tlength)!='\ 0'){

tlength的+ +;

}

同时(*(+ slength),='\ 0'){

slength + +;

}

就(i = 0; <= slength tlength; + +){

(*(+ I)== * T){

(温度= 0;温度<tlength温度+ +){

(*(+ +温度)!= *(T +温度)){

突破;

}

}

如果(临时== tlength)

开始= I;

}

}

返回启动;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
什么回文。判断是否是回文的标准时什么。

9 用一个指针就可以搞定。用strstr函数可以实现。
char *strstr(const char *haystack, const char *needle);追问

回文:
把相同的词汇或句子,在下文中调换位置或颠倒过来
例如:斗鸡山上山鸡斗
顺便把代码也给我吧,嘻嘻

追答

#include
using namespace std;
bool isPalindrome(char* s);
char* palindrome(char* s);
int find(char *s,char *t);
int find(char *s,char *t)
{
char *psubstr = strstr(s,t);
if(psubstr==NULL) return -1;
else
{
//分为下标从0开始或从1开始
#ifndef _INDEX_ONE_
return strlen(s)-strlen(psubstr);
#else
return (strlen(s)-strlen(psubstr))+1;
#endif
}
}
bool isPalindrome(char* s)
{
int nsize = strlen(s);
if(0==nsize%2) return false;//奇数才能使回文字符串
int half = nsize/2;
char *pstr1=s+half,*pstr2=s+half;
for(int i = 0;i<half;i++)
{
if(*(pstr1-i)!= *(pstr2+i))
{
return false;
}
}
return true;
}
char* palindrome(char* s)
{
int len = 2*(strlen(s));
int half = (len%2==0?len/2:len/2+1);
char *Pal= new char[len+1];
memset(Pal,0,len);
char *pstr1 = s+(half-1);
char *pstr2 = Pal+(half-1);
for(int i=0;i<half;i++)
{
*pstr2 = *pstr1;
if(i!=half-1)
{
pstr2++;
pstr1--;
}
}
*(++pstr2) = '\0';
strncpy(Pal,s,half-1);
cout << Pal << endl;
return Pal;
}
int main()
{
char buf[1024] = "abcd\0";
char* p = NULL;
p = palindrome(buf);
if(isPalindrome(p)) cout << p <<"is palindrome" << endl;
int pos = find(p,"dc");
cout << "dc find in "<< p << "index" << pos << endl;
}

不知道回文理解对不对。abcd 回文是 abcdcba

追问

嗯,对,谢了

本回答被提问者采纳
相似回答