急求程序!分数变小数

急求程序!分数变小数,第1张

6月19日 01:16 对于纯循环小数,转换方法是:循环节做分子;分母全是9,9的个数为循环节长度。。再约分即可

例:01111111=1/9

0123 123 123=123/999=41/333

035 35 35=35/99

对于混循环小数,转换方法是:分子为两数之差-----被减数:小数点后第一位的数直到第一个循环节结束,这几个数字构成的数作为被减数;减数:未参与循环的小数部分,分母由9和0组成,9的个数为循环节长度,0的个数为未循环部分长度。。再约分即可

例:01 23 23 23 23=(123-1)/990=122/990=61/495

073 865 865 865=(73865-73)/99900=73792/99900=18448/24975

032 11111111=(321-32)/900=289/900

循环小数麻烦些,比如

0(16789)

这代表01678916789

我们可以设s=0(16789)

则100000s=16789(16789)

相减得99999s=16789

则s=16789/99999

一般来说0(x1x2xn)可以化成x1x2xn/999(n个),然后再约分

这段代码存在一些语法错误和逻辑问题。以下是一些需要修正的地方:

1 在class定义中,应该在类名后面加上大括号,而不是分号。

2 在构造函数中,你没有创建一个对象来存储输入的参数值。应该将对象的名称命名为p,并使用new运算符来创建它。

3 yuefen()函数应该在Add()函数之前调用,否则输出的结果不准确。

4 Add()函数的公式不正确。应该是 q = ad+bc, w = bd。

5 Add()函数中的变量k没有用到,可以删除。

6 在yuefen()函数中,有两个for循环的条件判断不正确。应该将第一个for循环的w改为d,第二个for循环的q改为c。

修改后的代码如下所示:

```

#include<iostream>

using namespace std;

class Fraction {

int a;

int b;

int c;

int d;

int q;

int w;

public:

Fraction(int x, int y, int m, int n) {

a = x;

b = y;

c = m;

d = n;

if (b == 0 || d == 0)

cout << "输入错误" << endl;

}

void yuefen();

void Add();

};

void Fraction::yuefen() {

int i, j;

if (q > w) {

for (i = 2; i <= w; i++) {

if (q%i == 0 && w%i == 0) {

j = i;

q = q / j;

w = w / j;

i = 2;

}

}

}

if (q < w) {

for (i = 2; i <= q; i++) {

if (c%i == 0 && d%i == 0) {

j = i;

c = c / j;

d = d / j;

i = 2;

}

}

}

cout << q << "/" << w << endl;

}

void Fraction::Add() {

q = ad + bc;

w = bd;

}

int main() {

int f, s, t, l;

cin >> f >> s >> t >> l;

Fraction p = new Fraction(f, s, t, l);

p->Add();

p->yuefen();

return 0;

}

```

请注意,以上代码仅解决了语法问题,并没有对程序进行完整的功能测试。如果还有其他功能问题,可能需要进一步修改。

以上就是关于急求程序!分数变小数全部的内容,包括:急求程序!分数变小数、C语言 如何编写将小数转换成分数(可以肯定该小数能转换成分数)、c++中输入两个分数,经行相加约分输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9657612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存