案例描述 回文字符串是正反读都一样的字符,比如“level”,"noon"都是回文字符串。案例要求从键盘输出字符串,并判断字符串是否为回文字符串。
案例分析 判断一个字符串是否为回文字符串时常用的方法有两种
- 使用递归来解决问题
- 使用指针来解决问题
案例实现方法二 1,案例设计
- 用两个指针分别指向字符串开头和字符串末尾,判断两个指针所指向的字符是否相同
- 如果不相同直接返回0,表示此字符串不是回文字符串;如果相同,则把指向字符串的开头的指针加一,向后移动并指向下一个字符,同时把指向某位的指针减一,然后继续判断此时指针指向的两个指针是否相同,直到检查完字符串中的所有指针为止。
2,完整代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int fun(char *begin,char *end)
{
if(begin == NULL || end == NULL || begin > end)
{
return 0;
}
while(begin < end)
{
if(*begin != *end)
{
return 0;
}
begin++;
end--;
}
return 1;
}
int main()
{
int length = 1;
char ch,str[50];
char *begin = NULL;
char *end = NULL;
printf ("please input a string:\n");
while((ch = getchar())!='\n')
{
str[length] = ch;
length++;
}
begin = &str[1];
end = &str[length-1];
if(fun(begin,end) == 1)
printf("YES!\n");
else
printf("NO!\n");
system("pause");
return 0;
}
代码运行如下:
|