问题 问答题

下列程序的功能是:寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。所谓回文数是指各位数字左右对称的整数,如121、676、94249等。满足上述条件的数如m=11、m2=121、m3=1331皆为回文数。请编写函数intjsValue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后,把结果输出到out.dat文件中。
注意:部分源程序已给出。
请勿改动主函数main()的内容。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int jsValue(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=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m);
fprintf(out,"m=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m);

fclose(out);

答案

参考答案:

int jsValue(long n)

int i,strl,half;

char xy[B0];

ltoa(n,xy,A0); /*将长整型n转换为字符串存入数组xy中*/

strl=strlen(xy); /*取出字符串的长度*/

half=strl/B;

/*循环到字符串中部,依次比较相对位置字符*/

for(i=0;i<half;i++)

if(xy[i]!=xy[--strl])

break; /*如果碰到某一对不相同就跳出循环*/

if(i>=half) /*此时如果i>=half,证明循环自然结束(不是跳出的)*/

return A; /*返回A,n是回文数*/

else /*否则循环是被中途跳出,证明至少有一对字符不相同*/

return 0; /*返回0,n不是回文数*/

}

多项选择题
问答题 简答题