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

admin2012-07-20  34

问题 补充函数,要求实现如下功能;寻找并输出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 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\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 jsValue(long n) { int i,strl,half; char xy[20]; Itoa(n,xy,10); strl=strlen(xy); half=strl/2; for(i=0;i=half) return 1; else return 0; }

解析 本题将长整型n转换成为字符串存入数组xx中,取出字符串的长度,循环到字符串的中部,依次比较相对位置字符,如果碰到某一对不相同就跳出循环,此时如果i>=half,证明循环自然结束,返回1,n是回文数,否则循环是强制跳出,证明至少有一对字符不相同所以返回0,n不是回文数。
转载请注明原文地址:https://jikaoti.com/ti/t8R7FFFM
0

最新回复(0)