读书人

用C语言求循环小数循环节 求

发布时间: 2012-04-15 18:39:21 作者: rapoo

用C语言求循环小数循环节 求高手指点
代码如下
int main()
{
int z,i;
double d,x;
scanf("%lf",&d);//输入循环小数
i=0;
{
for(;;)
{
i++;//运算次数
z=d*10;//z为整形变量,思路是3=0.(3)*10
x=d*10;//x为double型,x=3.(3)
if(x-d==z)//用x-z得的值判断是否等于z !!(此处循环跳不出)
break;
}

}
}
求指点拜谢!!

[解决办法]
没看懂lz算法-_-||
写个基于字符串处理的

C/C++ code
#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){    char num[128];    int nl, fl, ret = 0;    if (!*gets(num)) {        printf("input error!\n");        return -1;    }    nl = strlen(num);    for (fl = nl >> 1; fl; ) {        if (memcmp(num + nl - fl, num + nl - (fl << 1), fl)) {            fl--;        } else {            ret = fl;            if (fl & 1) {                break;            }            fl >>= 1;        }    }    if (!ret) {        printf("no factor found!\n");        return -2;    }    printf("factor is: %s", num + nl - ret);    return 0;}
[解决办法]
if(fabs(x-d-z)<0.000001)
//do something
[解决办法]

1。int Z 类型提升到了double,已不再是int

2。float。 double.本身是个精度数,是个约数。如double pi=3.14;

3。两个约数不能判等, 3.1415 3.1415926 熟大熟小,只能用!= 即>=或<=判断

希望有所帮助

读书人网 >C语言

热点推荐