C语言:回文数的形成:任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步骤,则最终可得到一个回文数。

请编程验证。(回文数就是将一个数从左向右读是一样的,如121,11等)。(注:回文数不超过2147483647)
回文数的这一形成规则目前还属于一个猜想,尚未获得数学上的验证,有些回文数要经历上百个步骤才能获得,请编程验证,打印形成过程。如输入整数78,则形成回文数的过程为:78+87=165,165+561=726,726+627=1353,1353+3531=4884。
提示:一个函数用来求反序数,另一个函数判断是否为回文数,在主函数中输入输出。

#include<stdio.h>
/*
	int num(int x):求一个数x的反序数
	x:目标数
	返回值为目标数的反序数
*/
int num(int x)
{
    
    
	int i=0;
	while(x)
	{
    
    
		i=i*10+x%10;//将x的低位不断向上移
		x=x/10;//取x的低位
	}
	return i;
}
/*
	int judge(int x):判断x是否是一个回文数
	返回1表示是
	返回0表示不是
*/
int judge(int x)
{
    
    
	if(x==num(x))
	{
    
    
		return 1;
	}
	else
	{
    
    
		return 0;
	}
}
int main()
{
    
    
	int x1,x2,key;
	printf("请输入起始数值:");
	scanf("%d",&x1);//输入起始数值
	if(!judge(x2))
	{
    
    
		printf("是回文数\n");//是回文表示形成过程结束
		return 0;
	}
	while(1)
	{
    
    	
		x2=num(x1);//获取其反序数
		key=judge(x2);
		if(key==0)//不是回文,则打印过程
		{
    
    
			printf("%d+%d=%d\n",x1,x2,x1+x2);
			x1+=x2;
		}
		else
		{
    
    
			printf("是回文数\n");//是回文表示形成过程结束
			break;
		}
	}
    return 0;
}

对我的博客或其他方面有任何见解或问题的话都可以私信我
或者联系本人QQ:3128909688
微信:DreamHerome
欢迎致电

猜你喜欢

转载自blog.csdn.net/RViewSonic/article/details/108320879
今日推荐