回文数猜测

问题D:回文数猜测-分支循环小综合
题目描述
所谓回文数,即顺序与逆序均为相同的整数。如29210301均为回文数。
“顺逆求和”操作就是把一个数与其逆序数相加。
有人猜测:任意一个十进制整数n(n不为回文数),经有限次“顺逆求和’操作可得到一个回文数。
例如,对于n=69,有(169+96=1652165+561=7263726+627=1353
41353+3531=4884(回文数)。
试设计程序,验证某一区间[x1,×2]中的每一个数n是否为回文数,
若不是,请展示n通过以上“顺逆求和”操作转化为回文数的步骤数。
例如n=69时经4次操作得到回文数,输出694)及得到的回文数4884
如果超过100步还未能转化为回文数,则终止操作,输出n(?),表明该数可能不满足猜测。
输入
输入两个整数(第一个小于第二个)。
输出
输出回文数的步骤数及相应的回文数。
输入
86 90
输出
86(3):1111
87(4):4884
88(0):88
89(?):
90(1):99
*/
#include <stdio.h>
int palindrome(int n);
int main(){
int x1,x2;
int flag ;
scanf("%d%d",&x1,&x2);
for(int i = x1;i <= x2;i ++ ){
if(i == palindrome(i)){
printf("%d(0):%d\n",i,i);
}
else
{
//for(int t = i,j = 1;j <= 100;j ++){
//j为进行逆序求和的次数.
flag = 0;
int t = i;
for(int j = 1;j <= 100;j ++){
//int t = i;位置犯错
t += palindrome(t);
if(t == palindrome(t)){
printf("%d(%d):%d\n",i,j,t);
flag = 1;
break;
}
}
if(flag == 0)
{
printf("%d(?)\n",i);
}
}
}
return 0;
}
//调试的时后注意函数是否错误;
int palindrome(int n){
int ret = 0;//这里不要重复定义n
while (n > 0)
{
ret = n % 10 + ret * 10;
n /= 10;
}
return ret;
}
posted @   xuchaoxin1375  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示