C实例–判断一个字符串是否是回文数

最后更新于:2022-04-01 14:29:03

回文是指顺读和反读内容均相同的字符串,例如”121”,”ABBA”,”X”等。本实例将编写函数判断字符串是否是回文。 引入两个指针变量,开始时,两个指针分别指向字符串的首末字符,当两个指针所指字符相等时,两个指针分别向后和向前移动一个字符位置,并继续比较,直到两个指针相遇,说明该字符串是回文,如果比较过程中发现两个指针指向的字符不相等,则判断该字符串不是回文。 下面是代码的实现部分: ~~~ #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 20 int Cycle(char *s); /** * 回文是指顺读和反读内容均相同的字符串,例如"121","ABBA","X"等。 * 本实例将编写函数判断字符串是否是回文。 * */ int main() { char s[N]; while(1){ printf("Please input the string you want to judge(input ^ to quit):\n"); scanf("%s",&s); if(s[0] == '^'){ break; } if(Cycle(s)){ printf("%s is a cycle string!\n",s); }else{ printf("%s is not a cycle string!\n",s); } } return 0; } /** * 判断字符串s是否是回文 * * param: * char *s: 被判断的字符串 * return: * 0: 表示字符串s不是回文数 * 非零: 表示字符串s是回文数 */ int Cycle(char *s){ char *h,*t; for(h = s,t = s + strlen(s) - 1;t > h;h++,t--) if(*h != *t) break; return t <= h; } ~~~ 下面是程序的运行结果: ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-24_5743c0761002e.jpg "") 在做这个实例的时候,让我想到了之前有一个实例是判断一个数是否是回文数,是这样做的,假设一个数n=232,从各位数字开始,分别为2,3,2;这些数字分别乘以100,10,1最后相加,比较和原来的数是否相等,就能判断该数书否是回文数字了。
';