更多课程 选择中心

C/C++培训
美国上市教育机构

400-111-8989

C++培训

【C语言等级考试题目】回文数问题

  • 发布:C++培训
  • 来源:伊俊校园社区
  • 时间:2019-07-25 13:47

下列程序的功能是:寻找并输出 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

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:【C语言等级考试题目】完全平方数问题
下一篇:【C语言等级考试题目】整数统计运算题

用C求数组中的最大值的简单代码

C++语言的特点

C/C++制作人机猜拳小游戏

【C语言等级考试题目】字符串左右排序交换题

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省