一、思路
首先看什么是回文字符串,列如:abccba,dfafd......
然后看想法,先定义一个字符数组,然后输入一个字符串之后,要让一个指针变量指向该数组,继而要用指针变量找到字符数组'\0'的位置,最后想办法把最后的一位数往前移的同时又让第一位数往后移,这样才能进行比较(是否为回文),而且也要有个限制(停止条件)。要是有想法了,就先别看下面,掏出小本本做做试试看,说不定就做出来了。
二、代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int ishuiwen(char *q)
{
char* p = q; //又定义一个指针变量,这样创造条件-最后的一位数往前移的同时又让第一位数往后移
int t;
while (*q != '\0')//先找到最后一位
q++;
q--; //要从'\0'前面那一位跟第一个开始比较
while ((*q == *p) && q > p)//如果执行到q>=p的地步,那么肯定是回文:abcba,当p=q时
q--, p++; //即*p=*q=c;若中道崩殂:asdfsa,此时p<q,即*p=d不等于*q=f,退出循环
if(q<=p)
t=1;
else
t=0;
return t;
}
int main()
{
char s[30];
int n;
printf("请输入一个字符串:");
gets_s(s, 20);
n = ishuiwen(s);
if (n == 1)
printf("字符串:%s是回文",s);
else
printf("字符串:%s不是回文",s);
return 0;
}
三、总结
做题之前一定要先缕清思路,有目标的去想,漫无目的很伤,很痛苦。