所有三位数中的回文数有几个

一定要是对的!

第1个回答  2009-12-17
送你一功能的程序,是三重回文数***************
注意:下面这个程序能从 0 开始验证一个整数是否是三重回文数!!!
#include <stdio.h>
int main()
{
bool huiwen(long n);
long m;
for (m=0;m<1000;m++)
if(huiwen(m)&&huiwen(m*m)&&huiwen(m*m*m))
printf ("%d\n",m);
return 0;
}

bool huiwen(long n)
{
/*********************************************/
long lold=n,lnew=0;
while(n/10!=0 || n%10!=0)
{
lnew=lnew*10+n%10;
n=n/10;
}
if(lold==lnew)
/*****************************************/
return true;
return false;
}

说明:上面的两条星号线的代码可换为下面的代码:(看你自己喜欢)
char a_array[12]={0},b_array[12]={0};
int i,length=0;
while(n/10!=0 || n%10!=0)
{
a_array[length++]='0'+n%10;
n=n/10;
}
for(i=0;i<length;i++)
b_array[i]=a_array[length-i-1];
if(strcmp(a_array,b_array)==0)
********************************************

看看,关于你的程序:
(首先说说你的程序,还不错,就是检验回文数的函数huiwen()写得太复杂了,简化的,看上面写的程序,也许你还可以简化我上面的程序。)
for (i=0;i<length/2;i++){
if(a[i]!=a[length-1-i]){
return 0;
}
return 1;
}
你注意看上面这段程序,特别注意“{}”你发现了吗?
你用了两个大括号!!!
就错在这里,不是不应该用,而是你用错了!!!

应该是:
for (i=0;i<length/2;i++){
if(a[i]!=a[length-1-i]){
return 0;
}
}
return 1;

其实,根本不用加的,直接这样:
for (i=0;i<length/2;i++)
if(a[i]!=a[length-1-i])
return 0;
return 1;

你自己看看,我说对了吗?
(括号多了也会错,该不用就不用,使用的原则:能使程序看起来更清晰明白,但有时候,不用更易懂,就像上面,你出的问题不多,算法你也会,但是由于你多用了“{}”,结果错了,不易发现而已!!!)
第2个回答  2009-12-17
90本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网