谢谢各位
回复 8 楼 Andrew_Lee
我自己试着写了一下程序. 算法是这样的, 用pow()取得输入的位数的上下限的值,然后for循环. 如果一个数的平方与该数字的差能够整除10的位数次方,那么输出该数字. 代码如下:
程序代码:
#include "stdio.h" #include "math.h" int main() { int a,b,c,d,f,g,i; printf("本程序用来输入指定位数的自守数.\n"); printf("请输入你想要的自守数的位数;\n"); scanf("%d",&a); b=pow(10,a-1); c=pow(10,a); d=c-1; for(i=b;i<=d;i++) { f=i*i; g=f-i; if(g%c==0)printf("%d,",i); } return 0; }
输入1的时候还能正确输出,得到结果1,5,6.
可是输入2的时候就不行了,输出结果是45和55,这是为何?
pow()函数的问题? 该如何处理?
[ 本帖最后由 vvvcuu 于 2014-4-24 11:02 编辑 ]