回文串判断C++如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/02 17:42:50
回文串判断C++
如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,同时处理一个汉字通过成对字符数组元素比较完成.如:若汉字串为str1[31]="红黑红黑红",串长n=10第一个汉字与最后一个汉字的比较是 str1[0]==str1[n-2]&&str1[0+1]==str1[n-1].strrev()函数不能用于汉字.
如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字和非汉字分别处理,判断是否汉字的标志是汉字ASCII码是为负数,同时处理一个汉字通过成对字符数组元素比较完成.如:若汉字串为str1[31]="红黑红黑红",串长n=10第一个汉字与最后一个汉字的比较是 str1[0]==str1[n-2]&&str1[0+1]==str1[n-1].strrev()函数不能用于汉字.
#include <cstdio>
using namespace std;
bool isPalindrome(char inStr[])
{
char* pl = inStr;
char* pr = inStr;
while (*pr != 0) pr++;
pr--; //pr指向最后一个字符
while (pl < pr)
{
if (*pl < 0) //中文
{
if(pl[0] != pr[-1] || pl[1] != pr[0])
{
return false;
}
else
{
pl += 2;
pr -= 2;
}
}
else if(*pl++ != *pr--)
{
return false;
}
}
return true;
}
int main()
{
char buf[500] = {0};
scanf("%s",buf);
if (isPalindrome(buf))
{
printf("是回文\n");
}
else
{
printf("不是回文\n");
}
return 0;
}
再问: 不用指针
再答: 用不用指针都差不多啦, 没有指针版本:bool isPalindrome(char inStr[])
{
int il = 0;
int ir = 0;
while (inStr[ir] != 0) ir++;
ir--; //ir是最后一个字符索引
while (il < ir)
{
if (inStr[il] < 0) //中文
{
if(inStr[il] != inStr[ir-1] || inStr[il+1] != inStr[ir])
{
return false;
}
else
{
il += 2;
ir -= 2;
}
}
else if(inStr[il++] != inStr[ir--])
{
return false;
}
}
return true;
}不觉得两段代码很像么?
再问: 还是看不大懂,和我们学的不太一样,这是C++么
再答: 额...你哪边觉得它不是C++呢, 除了scanf和printf是C库中的函数外...
using namespace std;
bool isPalindrome(char inStr[])
{
char* pl = inStr;
char* pr = inStr;
while (*pr != 0) pr++;
pr--; //pr指向最后一个字符
while (pl < pr)
{
if (*pl < 0) //中文
{
if(pl[0] != pr[-1] || pl[1] != pr[0])
{
return false;
}
else
{
pl += 2;
pr -= 2;
}
}
else if(*pl++ != *pr--)
{
return false;
}
}
return true;
}
int main()
{
char buf[500] = {0};
scanf("%s",buf);
if (isPalindrome(buf))
{
printf("是回文\n");
}
else
{
printf("不是回文\n");
}
return 0;
}
再问: 不用指针
再答: 用不用指针都差不多啦, 没有指针版本:bool isPalindrome(char inStr[])
{
int il = 0;
int ir = 0;
while (inStr[ir] != 0) ir++;
ir--; //ir是最后一个字符索引
while (il < ir)
{
if (inStr[il] < 0) //中文
{
if(inStr[il] != inStr[ir-1] || inStr[il+1] != inStr[ir])
{
return false;
}
else
{
il += 2;
ir -= 2;
}
}
else if(inStr[il++] != inStr[ir--])
{
return false;
}
}
return true;
}不觉得两段代码很像么?
再问: 还是看不大懂,和我们学的不太一样,这是C++么
再答: 额...你哪边觉得它不是C++呢, 除了scanf和printf是C库中的函数外...
回文串判断C++如果一个字符串正反看(左到右,右到左)是相同的称为回文.编程判断从键盘输入的任意一个串是否回文.注:汉字
(5) 编写一个函数fun,判断一个字符串是否是回文.所谓“回文”,即顺读和倒读都一样的字符串.例如:“
编程判断一个5位数是否是回文数
1、代码填空 形如:“abccba”,“abcba”的串称为回文串,下列代码判断一个串是否为回文串.请补充空白的
C语言怎么判断一个数是否是回文数?
编写程序,从键盘输入一个5位数,判断该数是否为回文数.
写一个递归函数,判断输入的正整数是否是回文数(不使用数组)
回文串的问题我们说一个字符串是回文串,那么意味着这个串从两边读起来的字母都是一样的.例如racecar是回文串,然而fa
回文数是指一个数字正向和逆向读取的结果相同,如54345.编写一个函数,判断一个5位数是否回文数.
c语言求回文数定义一个函数,判断数x是否为回文数,如果是则返回1,否则返回0,在主函数中调用该函数,求1~10000的回
下列程序先消除输入字符串的前后空格,再判断是否是“回文”(即字符串正读和倒
C语言一个7位数,判断它是不是回文数.即1234432是回文数.