一个三级题,看不懂,求助

来源:百度知道 编辑:UC知道 时间:2024/06/21 03:23:42
下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()的内容。
-------------------
int jsvalue(long n) /*标准答案*/
{int I,strl,half;
char xy[20];
ltoa(n,xy,10);
strl=strlen(xy);
half=strl/2;
for(I=0;I<half;I++)
if(xy[I]!=xy[--strl]) break;
if(I>=half) return 1;
else return 0;
}

看不懂,感觉难,求会的懂的尽力给解释详细一些吧,在此谢过了!

int jsvalue(long n) //形参n是要检测的数,等于m;m2或是m3的值.
{
int I,strl,half; //strl是n的位数,half为一半.
char xy[20]; //定义一个数组.
ltoa(n,xy,10); //ltoa函数是用来把n的每一位都存放进数组.
strl=strlen(xy); //这句你应该知道,就是看数组的长度.
half=strl/2; //这是一半的长度.
for(I=0;I<half;I++)
if(xy[I]!=xy[--strl]) break; //做循环,当第I位和倒数第I位 的值不相等的时候,就跳出.
if(I>=half) return 1; //如果一直到中间,他们都是相等的,就返回 1,代表n是回文.
else return 0;//否则返回0,代表不是回文.
}

这个程序的思想,就是把一个整数的每一位分散到一个字符型数组中去,然后通过数组第I位和倒数I位(I不超过中间位置)的比较,进行判断,看是否是回文.

问错地方了,答你的人少,到 电脑/数码/软件区去问.