博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断一个数是否为回文数,字符串是否为回文字符串
阅读量:4029 次
发布时间:2019-05-24

本文共 1643 字,大约阅读时间需要 5 分钟。

使用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 = ch3 + 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)	{		return 0;	}	else	{		pld(++begin, --end);	}}

本文出自 “” 博客,请务必保留此出处

转载地址:http://yilbi.baihongyu.com/

你可能感兴趣的文章
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
2017阿里内推笔试题--算法工程师(运筹优化)
查看>>
python自动化工具之pywinauto(零)
查看>>
python自动化工具之pywinauto(四)——批量转换exe视频
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>
Java的对象驻留
查看>>
自己动手写GC
查看>>
Java 8新特性终极指南
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>