补充函数,要求实现如下功能;寻找并输出11~999之间的数m,它满足m、m2、m3均为回文数(回文数是指各位数字左右对称的整数),例如;12321,505,1458541等。满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。请编写jsV

admin2011-06-14  31

问题 补充函数,要求实现如下功能;寻找并输出11~999之间的数m,它满足m、m2、m3均为回文数(回文数是指各位数字左右对称的整数),例如;12321,505,1458541等。满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。请编写jsValue(long m)实现此功能。如果是回文数,则函数返回1,不是则
返回0。最后,把结果输出到文件OUT.DAT中。
注意;部分源程序已经给出。
请勿改动主函数main()中的内容。
试题程序;
#include
#include
#include
int jsValue(long m)
{
}
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=%8ld\n",m,m*m,m*m*m);
  fprintf(out,"m=%41d,m*m=%61d,m*m*m=%81d\n",m,m*m,m*m*m);
}
fclose(out);
}

选项

答案 int jsVlue(long m) { int i,str;half; char temp[20]; ltoa(m,temp,10); str=strlen(temp); half=str/2; for(i=0;i=half) return 1; else return 0; }

解析 判断回文数,即比对该数字位置上的数是否相等,此时使用ltoa函数将数字进行拆分,拆分为各个单独的数字并放入字符数组中,然后进行比对。如果首位位置不相等,则退出循环,如果相等则继续比对,直到比较到中间位置时都相等,则是回文数,此时返回1。
转载请注明原文地址:https://kaotiyun.com/show/1raZ777K
0

最新回复(0)