自守书 指 一个数的平方的尾数等于该熟自身的自然数 例如:
25*25=625 76*76=5776 9376*9376=87909376
我自己写了下代码 最后那部分判断该数平方的尾数是不是等于该数的那后面出问题了 我找了半天 找不出逻辑错在哪 请高手指点下 先谢了:
int num(int n) //计算数的位数
{
int r,coun=0;
while(0!=r)
{
r=n/10;
n/=10;
coun++;
}
return coun;
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int n,m,i,s,r,j,t;
int *p = NULL;
s = 0;
for(m=0;m<100;m++)
{
n=m*m;
// printf("%d \n",n);
r=num(m);
// printf("%d \n",r);
p = (int *)malloc(r*sizeof(int));
for(i=1,p[0]=n%10;i<r;i++) //得到平方数的尾数
{
n = n-p[i-1];
p[i] = n/10%10;
n=n/10;
}
//for(i=0;i<r;i++) //打印尾数数字
// printf("%d ",p[i]);
for(i=1;i<r;i++)
{
for(j=1;j<=i;j++)
{
p[i] = p[i]*10;
}
s +=p[i];
}
s=s+p[0]; //求出尾数
printf("\n%d ",s);
if(s == m) //比较尾数和该数是否相等
printf("\n%d ",m);
printf("\n");
}
}
----------------解决方案--------------------------------------------------------
我根据题目设计了一个检验是不是自留数的程序,仅供参考!
可能也不是很完善!
main()
{
long i,k,m=1,p;
printf("enter number i: ");
scanf("%ld",&i);
k=i*i;
p=k-i;
while(i>0)
{m=m*10;
i=i/10;
}
if(p%m==0)
printf(" ok %ld",k);
else printf("false");
while(1);
}
----------------解决方案--------------------------------------------------------
想输出10000以内的自留数,但怎么运行后是黑屏呢?
赐教!
main()
{
long i,k,m=1,p;
for(i=1;i<=10000;i++)
{k=i*i;
p=k-i;
while(i>0)
{m=m*10;
i=i/10;
}
if(p%m!=0)
continue;
else
printf(" %ld*%ld=%ld",i,i,k);
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
楼主的算法实在太麻烦了,帮你改改好了
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int n,m,i,r,s;
for(m=1;m<100;m++)
{
n=m*m;
r=log10(m)+1;
s=n%(int)pow(10,r);
if(s == m) //比较尾数和该数是否相等
{
printf("%d\n",m);
}
}
getch();
}
----------------解决方案--------------------------------------------------------
新手,算法复杂 多谢各位指导 !汗~~
----------------解决方案--------------------------------------------------------
getch() 无回显从控制台取一个字符
怎么理解
main函数最后 我见过很多写法
while(1);
return 0;
getch();
一直搞不懂到底什么区别,分别什么时候用,望赐教!
----------------解决方案--------------------------------------------------------