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++中输入两个分数,经行相加约分输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)