一、思路
首先看什么是回文字符串,列如:abccba,dfafd……
然后看想法,先定义一个字符数组,然后输入一个字符串之后,要让一个指针变量指向该数组,继而要用指针变量找到字符数组’\0’的位置,最后想办法把最后的一位数往前移的同时又让第一位数往后移,这样才能进行比较(是否为回文),而且也要有个限制(停止条件)。要是有想法了,就先别看下面,掏出小本本做做试试看,说不定就做出来了。
二、代码
#define _CRT_SECURE_NO_WARNINGS 1#includeint 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;elset=0;return t;}int main(){char s[30];int n;printf("请输入一个字符串:");gets_s(s, 20);n = ishuiwen(s);if (n == 1)printf("字符串:%s是回文",s);elseprintf("字符串:%s不是回文",s);return 0;}
三、总结
做题之前一定要先缕清思路,有目标的去想,漫无目的很伤,很痛苦。