编程例思路理解
编程例思路理解
若某数的平方具有对称性质,则称该数为回文数。例如11的平方为121,则称11为回文数。请找出1~999中的所有回文数。
/*int select(int a[],int x,)
{int i,n,x;
for(i=10,n=0;x<0;i*10,n++)
x=x%i;
return(a
*/
#include
int symm(long n)//定义一个函数
{
long i,g,new_num=0;
i=n;//赋值
while(i!=0)
{
g=i%10;//取余数,像第一个是个位数,第二个数经过循环后表示的就是原数的十位,
new_num=new_num*10+g;//新的数,就是从赋值的数一层一层的剥开这个数。构建一个
i=i/10;//除法在C语言中有取整的附加效果,依次除去原数的个位十位。。。。。
}
return(new_num==n);//这个不懂猜测是如果new-num等于n是真,否则是假,可是有什么作用呢。
}
//这个函数的作用是 奥 知道了。目的是数成对称的状态,所以呢,一个数从个位写到最后一位,等于,从最后一位写到个位,构造的这个新的数就是逆序。
不过哎,咋感觉这不对呢,代码写的好像不对啊。
奥奥奥,,我傻了我傻了。。。嗯嗯嗯嗯。。
void main()
{
long i,m=1,h[998][2]={1,1}; //h[998][2]二维数组,意思是åß∂ƒ©˙∆˚¬µ˜∫√ç≈Ω h[0][0]=1,h[0][1]=1.至于为什么要这样用二维数组。现在还是不知道
for(i=0;i<998;i++) //i<998
{
h[i][0]=m;
h[i][1]=m*m;//这个循环是 两个列,999个行。 这是赋值。第一列赋数,第二列赋数的平方
if(symm(m)&&symm(m*m))//&&是且的意思,需要两个同时满足,才继续进行下一步。symm这个函数的最后一个return的就是真假,所以就这样。
printf("%3d\t",h[i][0]);
m++; //m++放这里
}
}