C语言牛人来帮我一下吧?

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:55:22
三重回文数 寻找并输出11~999之间的数m,它满足m、m的平方、m的立方均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121、676、94249等。满足上述条件的数如 m=11,其平方为121,其立方为1331,皆为回文数。要求编制函数 int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。在主函数中将三重回文数输出

#include<stdio.h>
int svalue(long m)/*查看是不是回文数*/
{ long a=0,i,j=0,t,b[10];
for(i=10;(m/i)>0;i*=10)j++;/*看有好多位*/
for(t=1;t<=i;t*=10){j++;b[j]=m%t;}/*分别把各位放进数组中*/
t=10;
for(i=j;i!=0;i--){a=a+b[i]*t;t*=10;}/*首尾交换*/
if(a==m)
return(1);/*当是回文数的时候返回1*/
else
return(0);/*反面*/
}
void main()
{ long a;
for(a=11;a<=999;a++)
{ if(svalue(a) && svalue(a*a) && svalue(a*a*a))/*把A,A的平方,A的立方,都试;全部都是回文数就打印*/
printf("%d\n",a);
}
getch();
}

的确是只有 11 ,101 111

c++的东西可以用不,用c写太烦了...
算了我用c写个吧
int svalue(long m)

char value[20];
int i =0;
long leave = m;
for(i = 0; leave > 9; i++)
{
value[i] = m%10;
leave /= 10;
}
int csize = i -1;
for (i =0; i < csize/2 +1; i++)
{
if(value[i] != value[csize - i])
return 0;
}
return 1;

main自己写