【2006年全国房价】2006年9月全国等级考试三级c语言上机题库(二十五)

试题集锦 2023-06-14 网络整理 可可

【shitiku.jxxyjl.com--试题集锦】

★☆题目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 <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(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);

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,m*m= 121,m*m*m= 1331

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

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

本文来源:https://shitiku.jxxyjl.com/shitijijin2/27190.html

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计