你的循环定义错了,而且回文数的算法也不对。
#include
#include
int fun(int m)
{
int w=0,s,temp,i=0,x,y,z;
float t;
temp=m;
while ( temp!=0 )
{
temp=temp/10;
i++;
}
temp=m;
y=i-1;
for (t=1; t<=(i/2); t++)
{
z=pow(10,y);
if ( temp/z == temp%10 )
{
s=1;
}
else
{
s=0;return (s);
}
temp=(temp-(temp/z)*z-temp%10)/10;
y=y-2;
}
return (s);
}
main()
{
int n,s,sum=0;
for(n=1;n<=100;n++)
{
s=fun(n);
if(s==1)
sum++;
}
printf("sum=%d\n",sum);
}
你的程序可以这样表达:
#include
int fun( const int i ) {
int tmp, reversed_i = 0;
for ( tmp = i; tmp; tmp /= 10 )
reversed_i = reversed_i * 10 + tmp % 10;
return reversed_i == i;
}
void main( ) {
int i, sum = 0;
for ( i = 1; i <= 10000; i++ )
if ( fun( i ) ) sum++;
printf( "sum = %d\n", sum );
}
把fun()改一下:
int fun(int m)
{
int t,w=0,s;
t=m;
while(t>0)
{
w=w*10+t%10;
t/=10;
}
if(w==m)
s=1;
else
s=0;
return s;
}
fun函数中的while循环,当n〉=11时就是死循环
当然没有答案了
<10000太大了点了吧,那你还定义数据为int 当然不会执行拉
.
..
...请问回文数是怎么回事,能解释一下吗???