首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这题如何修正

2013-06-25 
这题怎么修正?Description你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,

这题怎么修正?
Description
你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,这很明白,就是以三为基(二进制数以2为基,而十进制数则以10为基)的小数。 
Input
有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。

Output
输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。 


Sample Input
1/3
1/4
1/6
7/8
Sample Output
.1000000000
.0202020202
.0111111111
.2121212122

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int san[10],a,b;
while(scanf("%d/%d",&a,&b)!=EOF)
{
printf(".");
for(int i=0;i<10;i++)
{
a=a*3;
float s=(a/b)+0.5;
int h=(int)s;
san[i]=h%3;
}
for(int j=0;j<10;j++)
{
printf("%d",san[j]);
}
printf("\n");
}
getchar();
return 0;
}


7/8我的输出是.2121212121 答案是.2121212122 
[解决办法]
不清楚题目中要求的最后一位的舍入是按照什么标准,四舍五入?四舍六入五成双?

没有标准的话,先随意用一种标准,多算1位数,舍入就可以了

热点排行