作者在 2009-03-14 21:58:15 发布以下内容
还是C语言问题,if(i>=half)
下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int jsValue(long n)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out93.dat中。
注意:部分源程序已给出。
请勿改动主函数main()。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int jsValue(long n)
{
int i; /*定义循环控制变量*/
int str,half; /*存储字符串的长度*/
char ch[20]; /*字符数组,存储每个数的字符串形式*/
ltoa(n,ch,10); /*将长整数n转换成与其等价的字符串存入xy指向的字符串中,输出串为十进制*/
str=strlen(ch); /*求字符串的长度*/
half=str/2;
for(i=0;i<half;i++)
if(ch[i]!=ch[--str]) /*判断字符串是否左右对称*/
break; /*不对称就跳出循环,判断下一个数*/
if(i>=half) /*如果字符串是回文*/
return 1; /*则返回1*/
else
return 0; /*否则返回0*/
}
void main()
{
long m;
FILE *out;
out=fopen("out93.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\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);
}
下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int jsValue(long n)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out93.dat中。
注意:部分源程序已给出。
请勿改动主函数main()。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int jsValue(long n)
{
int i; /*定义循环控制变量*/
int str,half; /*存储字符串的长度*/
char ch[20]; /*字符数组,存储每个数的字符串形式*/
ltoa(n,ch,10); /*将长整数n转换成与其等价的字符串存入xy指向的字符串中,输出串为十进制*/
str=strlen(ch); /*求字符串的长度*/
half=str/2;
for(i=0;i<half;i++)
if(ch[i]!=ch[--str]) /*判断字符串是否左右对称*/
break; /*不对称就跳出循环,判断下一个数*/
if(i>=half) /*如果字符串是回文*/
return 1; /*则返回1*/
else
return 0; /*否则返回0*/
}
void main()
{
long m;
FILE *out;
out=fopen("out93.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\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);
}