对于一个数,要判定它是否是回文数,直观的做法是先判定其最高位(首位)与最低位(最后一位)是否相同,如果不同则不是回文数;如果相同则其掉其做高位和最低位,对剩余的位继续进行判定;如果剩余的位只有一位或零位(即整个数是偶数位)则为回文数。

本程序就是基于这样的基本思想进行计算的。

本程序通用性强,可以计算1到任意指定数之间的所有回文数。

计算回文数还可以用数字字符组合的方法来实现,算法上采用回溯法。

程序如下:

/* 打印输出1到输入数之间的回文数 */#include <stdio.h>int isPalindrome(long, long);int main(void)
{long n, i, mod = 1;scanf("%ld", &n);for(i=1; i<=n; i++) {if(i == mod * 10)mod *= 10;if(isPalindrome(i, mod))printf("%ld ", i);}printf("\n");return 0;
}// 判断n是否为回文数的函数
// 参数n为需要判断是否为回文数的数
// 参数bigmod,若n为m位数,其值为10^m-1(10的m-1次方)
// 参数bigmod必须事先正确设置
int isPalindrome(long n, long bigmod)
{int flag = 1;for(;;) {// 判断首位与末位是否相同,不同则不是回文数if(n/bigmod != n%10) {flag = 0;break;}// 如果只剩下1位或2位结束if(bigmod <= 10)break;// 去掉最高位和最低位n %= bigmod;n /= 10;bigmod /= 100;}return flag;
}

关键代码:

// 判断n是否为回文数的函数
// 参数n为需要判断是否为回文数的数
// 参数bigmod,若n为m位数,其值为10^m-1(10的m-1次方)
// 参数bigmod必须事先正确设置
int isPalindrome(long n, long bigmod)
{int flag = 1;for(;;) {// 判断首位与末位是否相同,不同则不是回文数if(n/bigmod != n%10) {flag = 0;break;}// 如果只剩下1位或2位结束if(bigmod <= 10)break;// 去掉最高位和最低位n %= bigmod;n /= 10;bigmod /= 100;}return flag;
}

输入20000时,程序运行结果如下:

I00010 打印1到输入数之间的回文数相关推荐

  1. 10000内的回文数c语言,回文数

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

  2. 求区间[1,n]之间的回文数

    题目描述 输入一个t, 表示有t组样例,每组样例输入一个整数n,求区间 [1,n]内有多少个回文数. 解题思路 按照常规的从1枚举到n再依次判断每个数是否为回文数显然是行不通的,所以我们需要用数学方法 ...

  3. mn之间的回文数c语言,c语言描述回文数的三种算法

    题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,88,99 共9个: * 请问:n ...

  4. 编写程序,定义一个方法,能够判断一个1~9999之间的数是否是回文数。

    回文数就是类似123321之类的数 package test; import java.util.*; public class test_2_4 {public static void main(S ...

  5. c语言判断回文平方数,C/C++回文数的判断(转)

    "回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. 平方回数 定义:一个回文数,它同时还是某一个数的平方, ...

  6. python回文数判断_python回文数判断

    什么是回文数? 有这样一类数,他们顺着看和倒着看是相同的数,例如:12321,1221,2332等,这样的数字就称为:回文数 输入一个5位数,用python判断它是不是回文数.即12321是回文数,个 ...

  7. 蓝桥杯系统练习:回文数、特殊回文数

    1.回文数 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. #include <std ...

  8. 蓝桥杯 基础练习 BASIC-8 回文数 循环 判断 回文数

    基础练习 回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条 ...

  9. 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。(回文数)

    问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. public class Main {pub ...

最新文章

  1. iOS UIView快速添加事件
  2. 文件控制 fcntl函数具体解释
  3. HTML从入门到进阶修炼
  4. Elasticsearch文档的CRUD
  5. angular依赖注入_Angular依赖注入简介
  6. “堂堂985博士,要去高职了,天空是灰暗的!!!”
  7. KafkaController介绍
  8. 句柄即GetSafeHwnd的作用
  9. java AES 32位加密解密
  10. CAD迷你看图 for Mac(MiniCAD)
  11. 不错的Unity教程
  12. Cameralink视频数据信号
  13. IBM SPSS Modeler 【4】 神经网络模型的测试验证
  14. SylixOS---Attach 到进程调试方法
  15. 外汇汇率接口 java_免费的货币汇率API
  16. android flurry 教程,Flurry没有集成到Android应用中
  17. unity小游戏的脚本
  18. Bugku杂项——图穷匕见
  19. 网站突然无法访问解决方案
  20. 按关键字爬取网页信息

热门文章

  1. WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置
  2. 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
  3. 项目启动会ppt_公司召开SAPERP项目启动会
  4. linux cron网址,cron 计划任务问题,我的cron要求是点击网站一个网址
  5. Broadcast variabies-广播变量
  6. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc
  7. 计算机系统的工作方式,计算机的操作系统与工作方式
  8. LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
  9. TCP如何保障可靠性
  10. 图像处理领域的国际会议及期刊