一个简单的程序,大家帮我看看
/*
如果有一个正整数从左、右来读都是一样的,则成为回数;比如101、32123、999都是回数。
回数猜想:任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数在倒过来,与原和数相加,重复此过程一定能获得一个和数。
68,,,86;
68+86=154;
154+541=605;
605+506=1111;
编程,输入任意整数,按上述 步骤产生一个回数,最多计算七步,看是否得到一个回数;;
//
*/
#include<stdio.h>
main()
{
int x, y, m, n, q, a, b;
int f(x);
int h(x);
scanf("输入一个两位数%d",&x);
for(n=1;n>7||q=1;n++)//错误的地方
{
a=f(a);//求倒数
b=a+b;
q=h(b);//判断是否为合数
}
printf("合数是%d,次数为%d",b,n);
}
int f(x)
{
int a, b, c, d, e, y;//这些是局部变量应该与上面的不冲突 请教大神
a=x/10000;
b=x/1000-a*10;
c=x/100-a*100-b*10;
d=x/10-a*1000-b*100-c*10;
e=x-a*10000-b*1000-c*100-d*10;
y=e*10000+d*1000+c*100+b*10+a;
return(y);
}
int h(x)
{
int a, b, c, d, e, q;
int l, o, p;
a=x/10000;
b=x/1000-a*10;
c=x/100-a*100-b*10;
d=x/10-a*1000-b*100-c*10;
e=x-a*10000-b*1000-c*100-d*10;
if(a==e&&b==d)//这里会出错 打算用switch语句不太会
l=1;
if(b==e&&c==d&&a==0)
o=1;
if(c==e&&a==b==0)
p=1;
if(l==1||o==1||p==1)
q=1;
return(q);
}
//请大家帮忙改进一下 谢谢了