C语言判别回文字符的两种简单方法
文章目录
一、回文字符串的概念
“回文字符串”是一个正读和反读都一样的字符串,比如“123321”或者“noon”等等就是回文串。
二、介绍两种判别回文字符串的方法
1.将需要判别的字符串倒序排列再与原字符串对比
实行方法如下:首先需要输入一个字符串,然后将该字符串用循环的方式赋值给另一个变量。(以此来保存原本字符串)。接下来我们就需要将这个字符串倒序排列然后与刚刚保存下来的原字符串做比较,如果是一样的那么他就是个回文字符串。
代码如下(示例):
#include<stdio.h>
#include<string.h>
int main()
{
char a[100]; //该数组来接收输入的字符串
char b[100]; //该数组用来拷贝一份输入的字符串
gets(a); // 输入字符串
char * p1; // 定义两个指针来做循环操作
char * p2;
//p1指向该字符串最后一个字符,p2指向数组首元素地址
for(p1=a+strlen(a)-1,p2=b;p1>=a;p1--,p2++)
{
*p2=*p1;
}
if(strcmp(a,b)==0)
printf("该字符串为回文字符串");
else
printf("该字符串不是回文字符串");
return 0;
}
2. 通过指针锁定第一个字符和最后一个字符比较是否相同,相同则继续比较第二个和倒数第二个字符,不同则跳出循环,依次类推。
代码如下(示例):
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
char *p;
char *q;
gets(a);
for(p=a,q=a+strlen(a)-1;*p!='\0';q--,p++)
{
if(*p!=*q) break;
}
if(p>q) printf("该字符串为回文字符串");
else printf("该字符串不是回文字符串");
return 0;
}