滴水逆向联盟
标题:
基于visual Studio2013解决C语言竞赛题之1060寻找回文数
[打印本页]
作者:
大灰狼
时间:
2014-8-14 08:41
标题:
基于visual Studio2013解决C语言竞赛题之1060寻找回文数
题目
download1.png
(12.25 KB, 下载次数: 139)
下载附件
保存到相册
2014-8-14 08:41 上传
解决代码及点评
[cpp]
view plain
copy
<pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">/*
60. 回文数指左右数字对称的数,如121,2112都是回文数。回文数猜想:取一任意十进制数,将其倒过来,并将这两个数相加,
然后把这个相加的和倒过来再与原数相加..., 重复此过程可得到一个回文数。如取68为任意数,经三步相加可得回文数:
6 8
+ 8 6 测试数据:
───── ① 68
1 5 4 ② 5
4 5 1 ③ 876
───── ④ 12501
6 0 5
5 0 6
─────
1 1 1 1
注意:
1) 上机时不要随便自选数据,因为对有的数经几十万次以上相加还未得到回文数。
2) 由于一位、两位数十分简单,故仅从3位数开始才判它是否为回文数。即5,55,66这样的数在此处不把它当作回文数。
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int f500601(int a)//逆置函数
{
int b=0;//记录逆置后的数
while (a>0)
{ b=b*10+a%10;
a=a/10;
}
return b;
}
int f500602(int a)//判断是否是回文数,如若是则相等返回1,不等返回0
{
return a == f500601(a);
}
int f500603(int a )
{
if (a<100)
{
return 0;
}
else return 1;
}
void main()
{
int a;
scanf_s("%d",&a);
int i=0;//记录相加的次数
while(f500602(a)<1 || f500603(a)<1)
{
a=a+f500601(a);
printf("%d,%d+%d=%d\n",++i,a,f500601(a),a+f500601(a));
}
system("pause");
}
</pre><br><br></pre><br></pre></pre></pre>
欢迎光临 滴水逆向联盟 (http://www.dtdebug.com/)
Powered by Discuz! X3.2