分享一下自己做计算机二级时遇到的题目以及根据解析的基础上我的理解
不喜欢勿喷,希望能帮到需要帮助的人
第一个while循环实现将指针p置位到字符串末尾,并统计字符数,也就是说n返回字符串的长度,然后将p指针知道指向字符串的尾地址
然后因为回文字符串正过来读和反过来读都是一样的,所以for循环这里是从0开始到字符串的一半长度之间进行遍历就可以达到目的
最后用if判断相同则什么都不用做,返回一开始就定义好的flag,不同则将flag改为0直接跳出循环
总代码:
#include <stdio.h>
#define N 80
int fun(char *str)
{
int i,n=0,flag=1;
char *p=str;
while (*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if(str[i]==str[n-1-i]) ;
else
{
flag=0;
break;
}
return flag;
}
void main()
{
char s[N];
FILE *out;
char *test[]={"1234321","123421","123321","abcdCBA"};
int i;
printf("Enter a string : ");
gets(s);
printf("\n\n");
puts(s);
if(fun(s))
printf("YES\n");
else
printf("NO\n");
}
运行截图: