补充函数,要求实现如下功能:寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(回文数是指各位数字左右对称的整数),例如:12321,505,1458541等。满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。请编写js-Value(long m)实现此功能。如果是回文数,则函数返回1,不是则返回0。最后,把结果输出到文件OUT.DAT中。
注意:部分源程序已经给出。
请勿改动主函数Main()中的内容。
试题程序:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int js Value(long n)
main()
long m;
FILE*OUt:
Out=fopen("OUT.DAT","w");
for(m=11;m<1000;m++)
if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m))
printf("m=%41d,m*m=%61d,m*m*m=%81d",m,m*m,m*m*m);
fprintf(out,"m=%41d,m*m=%61d,m*m*m=%81d",m,m*m,m*m*m);
fclose(out);
参考答案:int i,str,half;
char xy[20];
ltoa(n,xy,10);
strl=strlen(xy);
half=strl/2;
for(i=0;i<half;i++)
if(xy[i]!=xy[——strl])
break;
if(i>=half)
return 1;
else
return 0;
解析: 本题将长整型n转换成字符串存入数组xx中,取出字符串的长度,循环到字符串的中部,依次比较相对位置字符,如果碰到某一对不同,则跳出循环,此时i>=half,证明循环自然结束,返回1,n是回文数,否则循环将强制跳出,证明至少有一对字符不相同,所以返回0,n不是回文数。