C/C++培训
达内IT学院
400-996-5531
下列程序的功能是:寻找并输出 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
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved