你的程序我觉得有很多问题:我觉得不可能用一个循环便可以实现,它的公式是:y+=reversed[i]*10^(n-i+1) 其中n为数据的位数(在你的程序里);在你没有循环完以前你不知道n 是多少的!你的公式里面好象没有10^多少次方的循环。我的代码是:
#include
/*»ØÎÄÊý*/
int loop(int x);
main()
{
int a,b,x;
scanf("%d %d",&a,&b);
for(x=a;x<=b;x++)
if(loop(x))
printf("%d\n",x);
}
int loop(int x)
{
int temp,reversed[100],i,y,k,t=1,n;
y=0;
temp=x;
for(i=0;x!=0;i++)
{
reversed[i]=x%10;
x=x/10;
}
i-=1;
n=i;
for(;i>=0;i--)
{
for (k=0,t=1;k
}
y=y+t*reversed[i];
}
if(temp==y)
return 1;
else
return 0;
}
y=10*reversed[i-1]+reversed[i];
这一行改成
y = y * 10 + reversed[i];
就OK了。
原来的那行起码在i=1时存在一个reversed[i-1]没有正确初始化的问题。