| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2859 人关注过本帖
标题:[求助]每当十进制小数的第一个循环周期输出后,就结束该数的输出。
只看楼主 加入收藏
xiaoxu135
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-10-29
收藏
 问题点数:0 回复次数:26 
[求助]每当十进制小数的第一个循环周期输出后,就结束该数的输出。

对于n=2,3,4,。。。,50,输出1/n的十进制表示的字符列。要求每当十进制小数的第一个循环周期输出后,就结束该数的输出。以下是程序部分输出结果的样板:
1/2=0.50
1/3=0.3
1/4=0.250
1/5=0.20
1/6=0.16
1/7=0.142857
大家帮帮忙哈!

搜索更多相关主题的帖子: 十进制小数 周期 输出 样板 结束 
2006-10-30 22:52
chenbinlee
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-10-17
收藏
得分:0 
#include "stdio.h"
main()
{
float k,i=1.0;
int j;
for(j=2;j<=50;j++)
{
k=i/j;
printf ("%10f",k);}
}
2006-10-31 15:58
xiaoxu135
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-10-29
收藏
得分:0 

要求输出小数的一个循环后就停止输出阿


2006-10-31 16:44
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

就2-50啊,你把这些数的循环节长度算出来.保存到数组中就行了啊


2006-10-31 16:58
xiaoxu135
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-10-29
收藏
得分:0 

#include <stdio.h>
void main()
{
int n,i,j,k;
float x;
int a[100];
printf("enter n\n");
scanf("%d",&n);
for(i=2;i<=n;i++){
x=1/((float)i);

for(j=0;;j++){
x=x*10;
a[j]=(int)x;
for(k=0;k<j;k++)
if(a[k]==a[j]) break;
break;

}
for(i=0;i<k;i++)
x=x+(float)a[i]/10;
printf("%f\n",x);
}
}
大家看看这个程序哪里有错



2006-10-31 18:07
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

不是错在哪里,是根本就不对


2006-10-31 19:31
chenbinlee
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-10-17
收藏
得分:0 
写程序没步不要那么复杂!!  尽量给读者有容易读懂的感觉
2006-10-31 20:32
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

闲着无聊,写个玩玩,花了我一小时

#include <stdio.h>
int gcd(int m,int n)
{
int t;
if(m>n)
{
t=m;
m=n;
n=t;
}
while(n%m!=0)
{
t=n;
n=m;
m=t%m;
}
return m;
}
void len(int de,int *len1,int *len2)
{
int r=0;
*len1=0;
*len2=0;
while(de%10==0)
{
de=de/10;
(*len1)++;
}
while(de%2==0)
{
de=de/2;
(*len1)++;
}
while(de%5==0)
{
de=de/5;
(*len1)++;
}
if(de!=1)
{
while((r*10+9)%de!=0)
{
(*len2)++;
r=(r*10+9)%de;
}
(*len2)++;
}
}

void f(int num,int denom,char *result)
{
int t,x,i,index=0;
int length1,length2;
char temp[20];
t=gcd(num,denom);
num=num/t;
denom=denom/t;
x=(int)num/denom;
num-=x*denom;
if(x)
{
while(x!=0)
{
temp[index++]=x%10+'0';
x=x/10;
}
for(i=0;i<index;i++)
result[index-1-i]=temp[i];
}
else
result[index++]='0';
result[index++]='.';
len(denom,&length1,&length2);
for(i=0;i<length1;i++)
{
result[index++]=((int)(num*10/denom))+'0';
num=num*10%denom;
}
if(length2)
{
result[index++]='(';
for(i=0;i<length2;i++)
{
result[index++]=((int)(num*10/denom))+'0';
num=num*10%denom;
}
result[index++]=')';
}
result[index]='\0';
}
int main()
{
int i;
char s[1100];
for(i=2;i<=50;i++)
{
f(1,i,s);
printf("1/%d=",i);
printf("%s\n",s);
}
for(i=980;i<=982;i++)
{
f(1,i,s);
printf("1/%d=",i);
printf("%s\n",s);
}
return 0;

}


2006-10-31 21:19
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
注意循环节放在刮号里,容易区别

2006-10-31 21:21
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
to:我不是郭靖,加括号搞什么,不加也可以。

谁有强殖装甲第二部,可以Q我460054868
2006-10-31 21:28
快速回复:[求助]每当十进制小数的第一个循环周期输出后,就结束该数的输出。
数据加载中...
 
   



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

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