关于三级C语言的题,有没有简单易懂的算法啊?

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:39:37
语言下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int jsValue(long n)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out43.dat中。
注意:部分源程序已给出。
请勿改动主函数main()。
试题程序:
#include<stdio.h>

int jsValue(long n)
{

}

main()
{
long m;
FILE *out;
out=fopen("out43.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",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 myi[10];
long x=n;
int j=0;
int t=1;
int i;
for (;x>0;)
{
myi[j]=x%10;
j++;
x=x/10;
}
j--;

for (i=0;i<=j;i++,j--)
if (myi[i]!=myi[j])
t=0;
return t;
}

先把long 型数值转换成字符串,
再去比较首尾是否相等.
int jsValue(long n)
{
int len,mid,i,j;
char string[25];
itoa(n, string, 10); //转换成字符串
len=strlen(string);
for(mid=len/2,i=0,j=len-1;i<mid;i++,j--)
if(string[i]!=string[j]) //比较字符串对应位置是否相等
break;
if(i==mid)
return 1;
return 0;
}
我也在考计算机三级,希望可以相互交流与学习.QQ:285644373.