问题描述

打印所有不超过n(取n<256)的其平方具有对称性质的数(也称回文数)。

问题分析

对于要判定的数n计算出其平方后(存于a),按照“回文数”的定义要将最高位与最低位、次高位与次低位……进行比较,若彼此相等则为回文数。此算法需要知道平方数的位数,再一一将每一位分解、比较,此方法对于位数已知且位数不是太多的数来说比较适用。

此问题可借助数组来解决。将平方后的(a的)每一位进行分解,按从低位到高位的顺序依次暂存到数组中,再将数组中的元素按照下标从大到小的顺序重新将其组合成一个数众(如n=15,则a=225且k=522),若k等于n×n则可判定n为回文数。

算法设计

从低位到高位将某一整数拆分。对于一个整数(设变量名为a)无论其位数多少,若欲将最低位拆分,只需对10进行求模运算a%10,拆分次低位首先要想办法将原来的次低位作为最低位来处理,用原数对10求商可得到由除最低位之外的数形成的新数,且新数的最低位是原数的次低位,根据拆分最低位的方法将次低位求出a/10、a%10,对于其他位上的数算法相同。

利用这个方法要解决的一个问题就是,什么情况下才算把所有数都拆分完?当拆分到只剩原数最高位时(即新数为个位数时),再对10求商的话,得到的结果肯定为0,可以通过这个条件判断是否拆分完毕。根据题意,应将每次拆分出来的数据存储到数组中,原数的最低位存到下标为0的位置,次低位存到下标为1的位置……依次类推。

程序段如下:

for (i=0; a!=0; i++)

{

m[i] = a % 10;

a /= 10;

}

将数组中元素重新组合成一新数。拆分时变量a的最高位仍然存储在数组中下标最大的位置,根据“回文数”定义,新数中数据的顺序与a中数据的顺序相反,所以我们按照下标从大到小的顺序分别取出数组中的元素组成新数k,由几个数字组成一个新数时只需用每一个数字乘以所在位置对应的权值然后相加即可,在编程过程中应该有一个变量t来存储每一位对应的权值,个位权值为1,十位权值为10,百位权值为100……,所以可以利用循环,每循环一次t的值就扩大10倍。对应程序段如下:

for( ; i>0; i--)

{

k += m[i-l] * t;

t *= 10;

}

下面是完整的代码:

#include

int main()

{

int m[16], n, i, t, count=0;

long unsigned a, k;

printf("No. number it's square(palindrome)\n");

for( n=1; n<256; n++ ) /*穷举n的取值范围*/

{

k=0; t=1; a=n*n; /*计算n的平方*/

for( i=0; a!=0; i++ ) /*从低到高分解数a的每一位存于数组m[1]~m[16]*/

{

m[i] = a % 10;

a /= 10;

}

for(; i>0; i--)

{

k += m[i-1] * t; /*t记录某一位置对应的权值 */

t *= 10;

}

if(k == n*n)

printf("%2d%10d%10d\n", ++count, n, n*n);

}

return 0;

}

运行结果:

No. number it's square(palindrome)

1 1 1

2 2 4

3 3 9

4 11 121

5 22 484

6 26 676

7 101 10201

8 111 12321

9 121 14641

10 202 40804

11 212 44944

c语言编写函数求回文数,C语言求回文数(详解版)相关推荐

  1. 一文带你搞懂React路由(详解版)

    文章目录 React 路由

  2. m被3整除的c语言表达式,C语言编写函数fun,实现从整数m到n,能被3整除

    1.用c语言编写程序,实现输入10个数,分别求其最大值.最小值及平均数,要求用函数实现. #includevoidfun(doublea[10],intn){inti;doubleave,max,mi ...

  3. C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。

    1. 题目 假定输入的字符串中只包含字母和*号.请编写函数function,它的功能是:删除字符串中所有*号.在编写函数时,不得使用c语言提供的字符串函数. 2 .温馨提示 C语言试题汇总里可用于计算 ...

  4. 87.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

    87.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:除了字符串前导的号之外,将串中其他*号全部删除.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A ...

  5. 66.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。

    66.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:删除字符串中所有的号.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A*BC*DEFG***** ...

  6. 用C语言程序算交税,用C语言编写函数InComeTax计算七级累进税率的税后收入

    新的个人所得税对工资收入采用七级累进税率,税率如下: 已知一个人扣除社保公积金后的收入,请用C语言编写函数InComeTax计算税后收入. 全月应纳税额不超过1500元 ----3% 全月应纳税额超过 ...

  7. 互为质数的勾股数c语言,C语言求勾股数(详解版)

    搜索热词 问题描述 求100以内的所有勾股数. 所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c). 问题分析 根据"勾股数"定义,所求三角形三边应满足条件 a2 ...

  8. c语言strlen函数的作用是什么,c语言strlen函数的使用方法是什么

    c语言strlen函数的使用方法是什么 发布时间:2020-08-20 11:54:33 来源:亿速云 阅读:116 作者:小新 小编给大家分享一下c语言strlen函数的使用方法是什么,希望大家阅读 ...

  9. R语言生存分析(survival analysis)与生存资料有关的概念详解

    R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析

  10. Python之pandas:pandas中to_csv()、read_csv()函数的index、index_col(不将索引列写入)参数详解之详细攻略

    Python之pandas:pandas中to_csv().read_csv()函数的index.index_col(不将索引列写入)参数详解之详细攻略 目录 pandas中to_csv().read ...

最新文章

  1. 一个函数打天下,einsum
  2. 【c语言|Python】求一元二次方程ax^2+bx+c=0的根
  3. mongo mapreduce java_那位帮忙提供一个java mongodb多个collection进行mapreduce的操作。
  4. javafx 加载_JavaFX 2:如何加载图像
  5. mysql in 截断_MySQL十进制字段’数据在第1行的第x列被截断’问题
  6. Filecoin Gas基础费率跌至4.40 nanoFIL
  7. 谁给讲讲语音识别中的CTC方法的基本原理?
  8. 第五章 搭建开发板的测试环境
  9. python打包不能在其他电脑打开_pyinstaller打包python+opencv 无法在别人电脑上正常运行 问题所在:opencv_ffmpeg341_64.dll...
  10. 如何使用网线连接mac登陆锐捷使用校园网——针对华南农业学子
  11. 电视盒子装android,智能电视能不能装安卓应用市场,怎么安装
  12. win10设置计算机关机时间,最新版:如何在Win10计算机上设置计划的关机时间? Windows 10计算机设置定时关机命令...
  13. java生成随机邮箱_Java随机密码生成并和邮箱、手机号匹配
  14. 2021年12月大学英语六级作文
  15. 软件测试员一定需要懂编程代码吗?
  16. 同花顺炒股指标定制-K线只有红绿2个颜色怎么行?
  17. 5G已开始商用 目前提供5G商用服务的国家有哪些?
  18. php 7.1 国内下载地址,PHP下载|PHP for windowsV7.1.4官方版
  19. 保监会:大数据对保险业改革创新及保险监管影响研究
  20. 1.1关于机器学习和深度学习

热门文章

  1. 【硬件设备】海康NVR硬盘录像机接入海康RTSP摄像头操作步骤
  2. 【vulhub】Discuz-命令执行 wooyun-2010-080723
  3. javascript语言精粹数组篇之Array的方法注意事项
  4. [产品经理]产品经理的职业发展路线
  5. 第六届蓝桥杯大赛个人赛决赛(软件类) C++A组真题题解
  6. 全球与中国水电站自动化控制设备市场现状及未来发展趋势
  7. 对抗攻击Adversarial Attack
  8. ssm+java计算机毕业设计在线商城系统设计g0d26(程序+lw+源码+远程部署)
  9. 哪个群发渠道更适合你的业务?WhatsApp vs SMS vs 电子邮件
  10. 关于tool.exe的手工杀毒c0nime.exe servere.exe shualai.exe1explore.exe cmdbcs.exe