50元折心形的步骤图解:这是一道求回文数的题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 22:59:47
这是一道求回文数的题,输出11到999之间的数m,它满足m,m*m和m*m*m均为回文数:
#include <stdio.h>

int Fun(long n)
{
}

main()
{
long m;
FILE *out;
out=fopen("out.dat","w");
for(m=11;m<1000;m++)
{
if(Fun(m)&&Fun(m*m)&&Fun(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);
system("pause");
以下是答案:
int Fun(long n)
{
int i,strl,half;
char xy[20];

/*标准C函数,将长整型long数据转化成字符串
ltoa(long类型数字,用于存放的字符串数组,进制(这里是10进制)*/
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;
return 0;
}
答案中我有一处不明白:
xy[i]!=xy[--strl]
这里是用来检查整数中是否符合回文数要求,但我认为应该改成:xy[i]!=xy[strl--] 才对,不知但家认为我这样对吗?

应该是--str。
C的字符串长度不包括结束符'\0'。所以xy[strlen(xy)-1]才是字符串xy的最后一个字符(即'\0'前面的那个字符)。比如xy为“12321”时,它的长度为5,最后一个'1'是xy[4]。

你肯定认为 是先运算了!然后才运算的--吧 但是你忘了一点
就是如果有括号的话应该先做括号里的 后做括号外的
所以你写strl-- 和--strl应该都是一样的
不知道是不是这么理解的