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 ;
}

运行结果:

时间: 2025-01-30 04:41:11

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

c语言-C语言求回文数,满足m,m*m和m*m*m均为回文数

问题描述 C语言求回文数,满足m,m*m和m*m*m均为回文数 C语言求回文数,满足m,m*m和m*m*m均为回文数 编程求出11~999之间的回文数 解决方案 http://zhidao.baidu.com/link?url=J6jUedovjtgkY_S7HCLan1mMkWtPOuAMp_UOyQhknhcPebh_fAYjMrATK4snNimhu9gZev0tFUGuTFGCnAGHwa 参考

c语言-特殊回文数,大神们帮忙看一看,为什么编译通过而不会运行

问题描述 特殊回文数,大神们帮忙看一看,为什么编译通过而不会运行 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行. 样例输入 52 样例输出 899998 989989 998899 #include int main() { int a,b,c,d,e,f,n,m; scanf("%dn&quo

C语言判断回文数的小例子_C 语言

复制代码 代码如下: #include<stdio.h>#include<stdlib.h> int is_palindrome(char* para_str , int len); int main(int argc , char* argv[]){   int n = atol(argv[2]);     if (is_palindrome(argv[1],n))       printf("this string is palindrome !\n"); 

SPOJ 查找下一个回文Palindrome 算法题解

给出一个数值,well,其实不是数值了,而是一大串数字, 比如 98237482340328490328490324893024,非常长的数字. 找出下一个Palindrome,这个Palindrome在数值上要比当前数值大(不能等于). 如: 9 9 9 9->1 0 0 0 1 1 2 3 4 5 ->1 2 4 2 1 本算法时间效率是O(n),其中n是指数值的位数,不是数值,比如123456789,只有9位,那么本算法接近常数: 更多精彩内容:http://www.bianceng.c

PHP输出两个数字中间有多少个回文数的方法_php技巧

本文实例讲述了PHP输出两个数字中间有多少个回文数的方法.分享给大家供大家参考.具体分析如下: "回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. <?php for($i=10;$i<100;$i++){ $len=strlen($i); $l=1; $k=intval($len)/2+1; for($j=0;$j<$k;$j++){ if (substr($i,$j,1)!=substr($

求助c语言回文数问题~~~

问题描述 求助c语言回文数问题~~~ #include<stdio.h> int main() { int i,t=0,s=0; for(i=1000;i<10000;i++,s=0,t=0){ t=i; while(t){ s=s*10+t%10; t/=10; } if(s==i) printf("%d",i); } return 0; } 结果是0分...... 请问哪里错了 解决方案 每个输出是不是需要一个换行呢? #include<stdio.h>

C++回文数及素数问题计算方法_C 语言

本文实例讲述了C++回文数及素数问题计算方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 16 日 * 版 本 号:v1.0 * * 输入描述: 编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务.) (1)输出10000以内的所有素

C语言中判断一个数是否是回文数

注:回文数即数字顺着和反着是同一个数! 看了郝斌老师的C语言视频,虽然还只看了80多个,但是还是有一些体会,编程应该养成良好的编程风格,至少到现 在为止写的这些小程序都应该有下面这样一个过程: 1,流程:(知道程序是按照怎样的顺序运行的) 2,功能:(理解程序的作用) 3,试数:(我个人简单的理解为测试过程,把自己当作计算机去执行程序) /* 2012年4月20日 10:36:23 判断一个数是否是回文数 */ #include <stdio.h> int main(void) { int v

c语言-请问如何用C语言判断一个整型的数是否为回文数

问题描述 请问如何用C语言判断一个整型的数是否为回文数 请教各位大神,如何用C语言判断一个整型的数是否为回文数? 解决方案 http://blog.163.com/ah..zhangrui/blog/static/539258022009105111759703/ 解决方案二: 把数字截取成数,按下标比较就可以了 解决方案三: 左右判断 是否对称 http://blog.csdn.net/u012605629/article/details/44648377 解决方案四: 楼主,程序直接给你,够