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”)。
回文:
把相同的词汇或句子,在下文中调换位置或颠倒过来
例如:斗鸡山上山鸡斗
回文:
把相同的词汇或句子,在下文中调换位置或颠倒过来
例如:斗鸡山上山鸡斗
顺便把代码也给我吧,嘻嘻
#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
嗯,对,谢了
本回答被提问者采纳