C语言回文数

功能是:寻找并输出 11 至 999 之间的数 m,它满足 m,m2 和 m3 均为回文数。

所谓回文数是指其各位数字左右对称的整数,例如 121,676,94249 等。满足上述条件的数如 m=11,m2=121,m3=1331 皆为回文数。

请编制函数 int svalue(long m)实现此功能,如果是回文数,则函数返回 1,反之则返回 0。后把结果输出到文件 out.dat 中。
#include <stdio.h>

int jsValue(long n)

{int i,strl,half; char xy[20];

ltoa(n,xy,10); /注意这里不能使用 itoa()函数,因为 n 是 long 型的/ 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;

}

main()

{long m;

FILE *out;

out=fopen(“out.dat”,“w”);

for(m=11;m<1000;m++)

{

if(jsValue(m)&&jsValue(mm)&&jsValue(mm*m))

{ printf("m=%4ld,mm=%6ld,mmm=%8ld \n",m,mm,mmm);

fprintf(out,"m=%4ld,mm=%6ld,mmm=%8ld \n",m,mm,mmm);

}

}

fclose(out);

system(“pause”);

}

或者下面的解法:

int jsValue(long n)

{long int s=0,k;

k=n;

while(k)

{ s=s*10+k%10;

k/=10;

}

if(s==n) return 1;

if(s!=n) return 0;

}

输出结果为:

m= 11,mm= 121,mm*m= 1331

m= 101,mm= 10201,mm*m= 1030301

m= 111,mm= 12321,mm*m= 1367631

发布了239 篇原创文章 · 获赞 3 · 访问量 3161

猜你喜欢

转载自blog.csdn.net/it_xiangqiang/article/details/105164305
今日推荐