寻找并输出11~999之间的数m,它满足m、m的平方、m的立方均为回文数。怎么用c语言编程

所谓回文数是指其各位数字左右对称的整数,例如121、676、94249等。满足上述条件的数如 m=11,其平方为121,其立方为1331,皆为回文数。要求编制函数 int svalue(long m)实现此功能,如果是回文数,则函数则函数返回1,反之则返回0。在主函数中将三重回文数输出。

结果是下面三个数:
11 101 111

程序如下:

int svalue(long m){
int i,j,n[10],ok=1;
for (i=0;i<10;i++)n[i]=0;
i=0;
while(m>0) {n[i]=m%10; m/=10; i++;}
i--;
for(j=0;j<i/2;j++) if (n[j]!=n[i-j]) ok=0;
return ok;
}

main(){
long i;
for (i=11;i<=999;i++)
if(svalue(i) && svalue(i*i) && svalue(i*i*i))
printf("%d\t",i);
}

以上程序在TURBO-C 2.0上调试通过。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-31
我不会C语言,不过我可以给你一个java版的参考,希望对你能有用
public static void main(String [] ages){
for(int i=11;i<=999;i++){
if(check(i) && check(i*i) && check(i*i*i)){
System.out.println(i+"是回文数");
}}
}
public static boolean check(int i){
boolean b = true; //默认为是回文数
String is = i+"";
int len = is.length();
for(int j=0;j<len;j++){
if(is.charAt(j) != is.charAt(len-j-1)){
b = false;
break; //只要有一项不符合就标记并退出
}
}
return b;
}
结果是11,101,111

参考资料:咨询QQ:471458030

第2个回答  2018-04-13
……看错了
第3个回答  2018-05-17
#include<iostream>
using namespace std;

bool symm(unsigned n)
{
unsigned i=n;
unsigned m=0;
while(i>0)
{
m=m*10+i%10;
i=i/10;
}
return m==n;
}
int main()
{
for(unsigned m=11;m<1000;m++)
if(symm(m)&&symm(m*m)&&symm(m*m*m))
{
cout<<" m="<<m;
cout<<" m*m="<<m*m;
cout<<" m*m*m"<<m*m*m<<endl;
}
return 0;
}
相似回答