请大家帮我看一个c程序,简单

来源:百度知道 编辑:UC知道 时间:2024/06/19 09:33:35
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int palindromevalue(long n)
{ int i, strl, half;
char temp[20];
ltoa(n, temp, 10);
strl = strlen(temp);
half = strl/2;
for (i=0; i<half; i++)
if (temp[i] != temp[--strl])
break;
if (i >= half)
return 1;
else
return 0;
}
main()
{ long m;
FILE *out;
out = fopen("OUT.dat", "w");
for (m=11; m<1000; m++)
if (palindromevalue(m) && palindromevalue(m*m) && palindromevalue(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);
}
//palindromevalue函数中的if (i >= half)是什么意思
在线等~~~~~
程序的功能是:寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。所谓回文数是指各位数字左右对称的整数,例如121、676、94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编写函数int

if (i >= half)的意思是:如果i>half或者i=half

联系上下文:
for (i=0; i<half; i++) if (temp[i] != temp[--strl]) break;
if (i >= half) return 1; else return 0;

从这两个语句看出,循环语句是在i<half的情况下运行,中途如果退出循环i肯定是小于half的,如果中途没有退出(循环里面的if语句从来没有满足过),那么i就会大于或者等于half。

所以第二句检查i和half的大小,实际上就是看循环中的条件是否满足过。