标题:[求助]每当十进制小数的第一个循环周期输出后,就结束该数的输出。
只看楼主
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 
不加括号,像
1/6=0.16
你知道循环节是16,还是6啊?
写成1/6=0.1(6),就不会产生误解.

1/28=0.03(571428)

2006-10-31 21:41
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
即是说循环小数,你喜欢就行。

谁有强殖装甲第二部,可以Q我460054868
2006-10-31 21:46
kavinka
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-10-19
得分:0 

讲个思路来听下.

2006-10-31 22:30
pyc21
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-16
得分:0 
太麻烦了,不会

2006-11-01 16:50
xpentium
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-11-3
得分:0 

用java 编一个吧
基本思想:这个思想有点像十进制数求二进制数的过程,每商一个数都会得到一个相应的余数,当余数重复出现是,这时后面商的数肯定会与前面的一样,也就是开始循环了。

import java.io.*;
public class Output_1_DIV_n {
private int dividend; //被除数 开始为1
private int divesor; //除数 n ,一直不变
private int yushu; // 余数
private int[] existYuShu; //用来记录所有出现过的余数
private int existYuShuCount; //已经存在的余数的个数
private int MaxYuShuCount; //存储余数的最大个数
private StringBuffer quotient; //存储商的最后结果

public Output_1_DIV_n(int n){
this.dividend = 1;
this.divesor = n;
this.yushu = -1; //初始化余数,不能为`1
this.quotient = new StringBuffer();
this.MaxYuShuCount = 50;//存储余数的最大个数默认为50 个
this.existYuShu = new int[this.MaxYuShuCount];
this.existYuShuCount = 0;


}

public static void main(String[] args) {
int n = 1 ;
while(n!=0){
System.out.println("请输入一个整数,求它的1\\n,且不输出小数点后面循环的部分,输入0 退出");
try{
String num = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
num = br.readLine();
n = Integer.valueOf(num);
if(n<=0){
throw new NumberFormatException();
}
}catch(NumberFormatException e){
System.out.println("请输入一个大于0的整数");
continue;
}
catch(IOException ei){

}
Output_1_DIV_n o = new Output_1_DIV_n(n);
System.out.println(o.getResult());
}

}

public StringBuffer getResult(){
int i = 1; // i [1,9]; 商数
if (this.divesor == 1) {
this.quotient.append("1.0");
return this.quotient;
}
this.existYuShu[this.existYuShuCount++] = 1;

do {
if (this.dividend < this.divesor) {
this.quotient.append("0");
this.dividend *= 10;
} else {
for (i = 1; this.dividend - this.divesor*i>=this.divesor;i++){}
this.quotient.append(Integer.toString(i));
this.yushu = this.dividend-this.divesor*i;
this.dividend = this.yushu;
this.dividend *= 10;
if(this.yushu == 0){
this.quotient.insert(1,".");
return this.quotient;
}
}
}while(this.yushu!=0&&this.existYuShuCount<this.MaxYuShuCount&&!exist(this.yushu));
this.quotient.insert(1,".");
return this.quotient;
}
private boolean exist(int count){
for (int i = 0; i < this.existYuShuCount; i++) {
if (this.existYuShu[i] == count) {
return true;
}
}
if(this.yushu!=-1)
this.existYuShu[this.existYuShuCount++] = this.yushu;
return false;
}

}

//闲来无事,编一小程序,各位大哥大姐多多指点指点

2006-11-03 00:51
xpentium
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-11-3
得分:0 
哦忘了看
这里是C语言论坛,
改天再来用C 写一个吧
2006-11-03 00:56
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
得分:0 

麻烦“我不是郭靖”讲一下变成思路吧,看不懂啊。

2006-11-03 09:20
zgwxwn
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-24
得分:0 

还真是挺麻烦的啊 !!!

[此贴子已经被作者于2006-11-3 10:28:42编辑过]


coding & enjoying
2006-11-03 10:27
zgwxwn
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-24
得分:0 
if(m>n)
{
t=m;
m=n;
n=t;
}
有用么??m是1 n从2开始 不解是何用意

coding & enjoying
2006-11-03 11:15
zgwxwn
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-24
得分:0 
进一步看 觉得函数gcd形同虚设 还是那个原因 m=1 n是整数while(n%m!=0) 不会执行 再次不解;

coding & enjoying
2006-11-03 11:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-99814-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104147 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved