C语言之回文数算法

“回文”是指正读反读都能读通的句子。它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这种特征,成为回文数(palindrome
number)。

设n是一随意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。比如,若n=1234321,则称n为一回文数。但若n=1234567,则n不是回文数。

上代码:

#include <stdio.h>
#define  true  1
#define  false 0 

int huiwenshu(int n)
{
	int p;
	p=n;
	int k=0;
	//将n进行倒序后保存在k这个变量中
	while(p!=0)
	{
		k=k*10+p%10;
		p=p/10;
	}
	//推断倒序后的结果k 和原来输入的数字n 是否相等,相等返回true
	if(k==n)
		return true;
	else
		return false;
}

int  main(void)
{
	printf("please input number:\n");
	static int num ;
	static int ret ;
	scanf("%d",&num);
	ret = huiwenshu(num);
	if(1 == ret)
		printf("是回文数\n");
	else
		printf("不是回文数\n");
	return 0 ;
}

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

时间: 2025-01-31 09:34:54

C语言之回文数算法的相关文章

判断回文数算法

回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数. 比如形如 121,1221,13531 的数字都是回文数,但 -121,10,25 等等都不是回文数. 如何判断一个数是回文数?这是一个很简单的算法,最常见的实现方式是使用一个栈或其他方法,把数字序列逆序,然后判断逆序后的数字是否等于原先的数字.显然这种实现方式需要至少 n 次循环才能完成判断. 本文提供一种更巧妙的方法,利用回文数的特点,只需要循环 \(\frac{n}{2}\) 次就可以完成判断了,代码及注释如下: bool

C语言判断回文数

1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 //1.得到这个数字 2.翻转 3.进行比较 4.如果相同 就输出 是 否则 输出不是 6 7 int resource, result, re_tmp; //resource存放用户输入的数值 result存放翻转后的数值 re_tmp 存放用户输入的数值 在翻转的时候会用到 8 result = 0; //对result的初始化 9 printf("

c语言基础-回文数复习

# include<stdio.h> int main(void) { int sum = 0, val, m; printf("请输入一个随机整数:"); scanf("%d",&val); m=val; while (m){ sum= sum*10 + m%10;//(理解举例:m==123,sum==3*10^2 + 2*10^1 +3*10^0) m/= 10; } if (sum == val){ printf("%d是回文数

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数: 121: 12321: 1234321: 程序分析: 1. 回文数(palindromic number):是指一个数的最高位和最低位上的数相等,第二高位与次低位上的数相等,也就是关于中间"对称".如上面的三个数情况是一个回文数. 2.将这个数扩展成一个数组,将这个数的各个位上的数取出来并且一一赋给这个数组. 3.判断这个数组中的元素之间的关系是否符合回文数的特征.并且将结果输出.这个程序写了一个函数来实现这一功能. 代码如下: #include&

【C语言】回文数与回文字符串的判断。

任意输入一个数,判断是否为回文数. 方法:将高低位互换之后如果仍然相等,则为回文数. #include <stdio.h> int huiwen(unsigned int value) { unsigned int n = value; unsigned int t = 0; while(n) { t = t*10 + n%10; n = n/10; } return (t == value); } int main () { int a,tmp; printf("please en

无聊试试各牛B语言: 求回文数

环境: CPU :  I5-4200 MEM: 4G OS: 64bit  -- Windows (10)   &  Ubuntu (trusty) C 语言 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 bool ishuiwen(int n) { 6 int sn = 0; 7 sn = n; 8 int tn = 0; 9 while (sn != 0) { 10 tn =

回文数的实现代码

回文数,顾名思义,就是一种数,正序逆向读取完全一致.像12321,4567654就是回文数. 用C语言实现回文数的判断呢,很简单.在这呢,我做简单的介绍. 首先,用判断语句实现.判断语句呢,就是通过循环和简单的运算符,找出该数的逆向读取的数据,于本身进行比较便得到了. 代码如下: #include<stdio.h> void main() { int num; scanf("%d",&num); int min = 0, max = num; while (max

算法趣题之回文数

题目:求用十进制.二进制.八进制表示都是回文数的所有数字中,大于十进制数10的最小值. 啥叫回文数:如果把某个十进制数按相反的顺序排列,得到的数和原来的数相同,则这个数就是"回文数".例如12321就是一个回文数. 这个题目拿Ruby.JavaScript.python.Java都很容易实现,因为这些语言都提供了字符串逆序处理的接口,或者相关其他接口,而C语言没有提供直接转换的接口,所以下面用C语言解题,其中设计的封装在工作中也会经常碰到,故记录并分享,如有错误或者有更好的算法,欢迎留

【LeetCode-面试算法经典-Java实现】【009-Palindrome Number(回文数)】

[009-Palindrome Number(回文数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Determine whether an integer is a palindrome. Do this without extra space. 题目大意 判断一个数字是否是回访字数,不要使用额外的空间. 解题思路 为了不使用额外的空间,参考了其它的解决,那些解法看起来在isPalindrome方法中没有使用额外参数,但是却使用了方法调用,这个比一个整数消耗的