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

文章作者 100test 发表时间 2007:03:10 19:12:07
来源 100Test.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

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

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.

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



相关文章


考前你最需要什么?面对计算机等机考试
一位四级通过者的经验
计算机等级考试证书含金量打折扣
2006年9月全国等级考试三级c语言上机题库(二十六)
2006年9月全国等级考试三级c语言上机题库(二十五)
2006年9月全国等级考试三级c语言上机题库(二十四)
2006年9月全国等级考试三级c语言上机题库(二十三)
2006年9月全国等级考试三级c语言上机题库(二十一)
2006年9月全国等级考试三级c语言上机题库(二十二)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛