帮我看看程序.谢谢!

2025-03-06 02:35:44
推荐回答(2个)
回答1:

你的程序我觉得有很多问题:我觉得不可能用一个循环便可以实现,它的公式是: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 { t*=10;
}
y=y+t*reversed[i];
}

if(temp==y)
return 1;
else
return 0;
}

回答2:

y=10*reversed[i-1]+reversed[i];
这一行改成
y = y * 10 + reversed[i];
就OK了。

原来的那行起码在i=1时存在一个reversed[i-1]没有正确初始化的问题。