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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断一个数是否为回文数,字符串是否为回文字符串相关的知识,希望对你有一定的参考价值。

使用C语言编写程序

判断一个数是否为回文数。(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数)。

要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等来判读。

具体实现如下:

void Practice()
{
	int num, value, flag, var;
	value = 0;
	flag = 1;
	scanf("%d", &num);
	var = num;
	while(num)
	{//value存储num的反序数字
		value = value * flag + num % 10;
		flag *= 10;
		num /= 10;
	}
	printf("value=%d\n", value);
	if (value == var)
	{
		printf("%d是回文数\n", var);
	}
	else
	{
		printf("%d不是回文数\n",var);
	}
}

判断一个字符串是否为回文字符串。(ps:回文字符串也是一个回文字符串,但原字符串和字符串逆序后一样,如abcba,cddc就是回文字符串)。

要判断字符串逆置后是否与原字符串一样,可以判断它是否对称。利用两个指针从该字符串两头向中间依次进行比较,判断是否相等,而结束点是begin==end(偶数个字符时)或++end==begin(奇数个字符时)。

具体实现如下:

void Practice()
{
	//char ch[] = "abcba";
	//char ch[] = "abccba";
	char ch[] = "abcrba";
	char* begin = ch;
	char* end = ch;
	while (*end != ‘\0‘)
	{
		end++;
	}
	end--;//使end指向字符串中的最后一个字符
	//while (!(begin == end || ++end == begin))//注意此处用++end
	//{
	//	end--;//由于while中++end,故使end重新指向
	//	if (*begin == *end)
	//	{
	//		begin++;
	//		end--;
	//	}
	//	else
	//	{
	//		printf("%s不是回文字符串\n", ch);
	//		return;
	//	}
	//}
	while (begin < end)
	{
		if (*begin != *end)
		{
			printf("%s不是回文字符串\n", ch);
			return;
		}
		begin++;
		end--;
	}
	printf("%s是回文字符串\n", ch);
}

也可以通过递归实现:

void Practice20()
{
	char ch1[] = "abcba";
	char ch2[] = "abccba";
	char ch3[] = "abcrba";
	char* end1 = ch1 + strlen(ch1) - 1;
	char* end2 = ch2 + strlen(ch2) - 1;
	char* end3 = ch1 + strlen(ch3) - 1;
	printf("%d\n", pld(ch1, end1));
	printf("%d\n", pld(ch2, end2));
	printf("%d\n", pld(ch3, end3));
}

int pld(char *begin, char *end)
{
	if (begin == NULL || end == NULL)
		return 0;
	if (begin == end || begin > end)
	{
		return 1;
	}
	if (*begin == *end)
	{
		pld(++begin, --end);
	}
}


本文出自 “Materfer” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1757746

以上是关于判断一个数是否为回文数,字符串是否为回文字符串的主要内容,如果未能解决你的问题,请参考以下文章

判断一个数是否为回文数

判断一个数是否为回文数或者打印特定范围的回文数。

C++程序,判断一个数是不是为回文数

如何用c语言判断一个数是回文数

C语言:判断一个数是不是为回文数,要求如下:

java语言判断一个数字是否为回文数字