码迷,mamicode.com
首页 > 编程语言 > 详细

(C语言)回文字符串的判断

时间:2015-04-26 16:47:18      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:c语言   回文字符串   gets和scanf的区别   

问题描述:

判断一个字符串是否为回文字符串。

程序分析:

回文字符串:

(1)是一种特殊的字符串,有着不一样的特点。整个字符串中的每个元素的首尾是相同的,并且内容关于中间“对称”。

(2)写程序的时候,写一个函数,并且用指针实现判断功能,最后再调用这个函数。

(3)在写这个函数的时候,我在主函数里传入一个字符串可以用scanf也可以用gets函数。这个时候如果我想要连续判断字符串是否为回文字符串的时候,我写了一个while循环,这个时候,如果我运用gets这个函数来传入我要判断的字符串时,会出现问题,,只有第一次输入的时候没问题,其他时候都是没输入的时候已经判断。

(4)我对以上出现的问题,做出一个解释。gets函数可以把敲入的回车键当做‘\0‘来读取,我们每次想要输入一个1想继续输入一个字符串判断的时候,相当于输入‘\0‘.所以输出判断的结果。


代码如下:


/*******************判断一个字符串是否是回文字符串********************/
#include<stdio.h>
#include<string.h>
#define	LENTH 100
int IS_palindromic_str(char arr[]) //定义判断回文字符串的函数
{
	char *left = arr;         //定义指针left指向数组的第一个元素
	char *right;			  //定义指针right
	
	while(*arr !='\0')	   //结束条件是访问到字符串中的'\0'
	{
		arr++;	
	}
	right = arr - 1;
	while(left <= right)
	{
		if(*left == *right)		 //判断是否符合回文字符串的条件
		{
			left ++;
			right--;
		}
		else
			return 0;	 //注意这时候先返回0
	}
	return 1;
}
int main()
{
	char str[100] ;
	int i = 1;
	  while(i)
	  {
		printf("Please input a string:\n");
		gets(str);
	//	scanf("%s",str);
		
		if((IS_palindromic_str(str)== 1))
			printf("str is a palindromic string\n");
		else
			printf("str is not a palindromic string\n");
		printf("continue:1,break:0\n");
		scanf("%d",&i);
//		fflush(stdin);	 //如果用gets函数传入str则要使用一个输入内存清空函数
	  }

		return 0;
}

技术分享技术分享


(C语言)回文字符串的判断

标签:c语言   回文字符串   gets和scanf的区别   

原文地址:http://blog.csdn.net/live_wyq/article/details/45289021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!