黑龙江省律师总人数:c语言问题?在线等

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 03:35:37
定义一个函数,判泌数x是否为回文数,如果是则返回1,否则返回0.在主函数调节器用该函数,求1~10000的回文数的个数!
#include<stdio.h>
int fun(int m)
{
int t,w=0,s;
t=m%10;
while(t>0)
{
t=m%10;
w=w*10+t;
t=m/10;
}
if(w==m)
s=1;
else
s=0;
return s;
}

main()
{
int n,s,sum=0;
for(n=1;n<=10000;n++)
{
s=fun(n);
if(s==1)
sum++;
}
printf("sum=%d\n",sum);
}

为什么不执行!~~
如果:for(n=1;n<=10000;n++)
改成for(n=1;n<=10;n++)
则可以出sum=9!
#include<stdio.h>
int fun(int n)
{
int t,w=0,s,m;
m=n;
do
{
t=m%10;
w=w*10+t;
m=m/10;

}
while(m>0);
if(w==n)
s=1;
else
s=0;
return s;
}

main()
{
int n,s,sum=0;
for(n=1;n<=10000;n++)
{
s=fun(n);
if(s==1)
sum++;
}
printf("sum=%d\n",sum);
}

这才是我需要的答案

你的循环定义错了,而且回文数的算法也不对。
#include<stdio.h>
#include<math.h>
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 <stdio.h>

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 当然不会执行拉

.
..
...请问回文数是怎么回事,能解释一下吗???