补充函数,要求实现如下功能:寻找并输出11~999之间的数m,使得m、m2、m3均为回文数(回文数是指各位数字左右对称的整数),例如:12321、505、1458541等。满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。请编写jsValue(long m)实现此功能。如果是回文数,则函数返回1,不是则返回0。最后,把结果输出到文件OUT.DAT中。
注意:部分源程序已经给出。请勿改动主函数main()中的内容。
试题程序:
#include<string.h>
#include<stdio.h>
#include<stdlib.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 i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].me,sell[j].mc)<0∥如果产品i的产品名称小于产品j的产品名称
‖strcmp(sell[i].mc,sell[j].mc)==0∥如果产品i的产品名称等于产品j的产品名称
&&sell[i].je>sell[j].je)∥如果产品i的金额大于产品j的金额
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}∥产品i和产品j交换
本题主要考查数组的排序操作。算法思路:①i结点与后面的所有j结点比较,若符合条件则交换i、j结点位置。②然后后移i结点,执行步骤①直到i结点是倒数第2个结点为止。