- 题目描述
验证猜想:任何一个十进制正整数与其反序数相加后得到一个新的正整数,对该正整数重复上述处理最终可得到一个回文数。键盘输入的一个正整数,输出得到的回文数及变换次数,若变换次数超过10000则停止变换,输出错误信息。
①编写函数int fun(long n, long *hw),n是从主调函数接收的一个正整数,将最后得到的回文数保存到hw指向的变量中,函数返回变换的次数。若变换次数超过10000则停止变换,函数返回-1.
②编写main函数,声明局部变量a、b、c,接收键盘输入的一个正整数保存到a中,用a作实参调用fun函数做变换,将得到的回文数保存到b中,变换次数保存到c中,输出得到的回文数及变换次数。
#include <stdio.h>
int huiwen(long n)
{
long int a,b=0,m;
m=n;
while(n>0){
a=n%10;
n=n/10;
b=b*10+a;
}
return b;
}
int fun(long n,long *hw)
{
long int i;
for(i=0;i<10000&&n!=huiwen(n);i++)
n+=huiwen(n);
if(n!=huiwen(n))
return -1;
else
*hw=n;
return i;
}
int main(void)
{
long a,b,c;
scanf("%ld",&a);
c=fun(a,&b);
if(c==-1)
printf("error");
else
printf("%ld,%ld",b,c);
return 0;
}
欢迎讨论!!!