C语言:南开100题第25题下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数.所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等.满足上述条件的数如m=11,m2=121,m3

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 11:33:40
C语言:南开100题第25题下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数.所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等.满足上述条件的数如m=11,m2=121,m3

C语言:南开100题第25题下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数.所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等.满足上述条件的数如m=11,m2=121,m3
C语言:南开100题第25题
下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数.所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等.满足上述条件的数如m=11,m2=121,m3=1331皆为回文数.请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0.最后把结果输出到文件out.dat中.
注意:部分源程序已给出.
请勿改动主函数main()的内容.
答案是
#include
#include
#include
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)
return 1;
else
return 0;
}
main()
{
long m;
FILE *out;
out = fopen("out.dat", "w");
for (m=11; m= half)
return 1;
中的if (i >= half)
我的思路是if (i = half)
这样子的,但是输入进去后发现答案不对,
请问为什么一定得是 if (i >= half) ,而不能是 if (i = half) 呢?
我认为i是循环到 half 的,按理说当 i=half 的时候就自动退出循环了
不会出现 i>half 的情况了
谢谢各位大侠了`````

C语言:南开100题第25题下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数.所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等.满足上述条件的数如m=11,m2=121,m3
你的判断没有错,但是在if里面的条件不能是if(i = half) ;因为(i = half)是个赋值语句.一直都是为真的,那程序就不能终止了.可以改成(i == half)