下列程序的功能是:寻找并输出11至999之间的数m,满足m、m2和m3均为回文数。所谓回文数是指各位数字

11 查阅

下列程序的功能是:寻找并输出11至999之间的数m,满足m、m2和m3均为回文数。所谓回文数是指各位数字左右对称的整数,例如121、676、94249等。满足上述条件的数,如m=11、m2=121、m3=1331,皆为回文数。请编制函数int svalue(long m)来实现此功能。如果是回文数,函数返回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);}

参考答案:

参考试题解析【解析及答案】本题属于按条件查找类型的题目,考核的知识点为判断回文数的算法。本题的解题思路为:在11~999之间逐个进行判断,看当前数字是否为回文数。若是回文数,则判断其平方是否为回文数;若其平方也是回文数,则判断其立方是否为回文数;若其立方仍然是回文数,则将原数返回。判断回文数的方法是:先将数字转换为字符型数据,再将其第一个字符与最后一个字符相比较,以此类推,一直执行到中间两个数字比较完成为止;若该字符串左右对称,则该数是回文数。程序的流程是:首先打开文件out.dat,然后通过for循环来

计算机三级