三进制小数:
将一个有理数转换成三进制小数。
输入:
有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。
输出:
输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。
样例输入:
1/3
1/4
1/6
7/8
样例输出
.1000000000
.0202020202
.0111111111
.2121212122
提示
(十进制四舍五入,三进制就一舍二入了 :)
#include<stdio.h>
int main()
{
int a, b,i;
double jieguo;
int at[12]; //定义一个数组存放数字
while(scanf("%d/%d",&a,&b)!=EOF) //实现多组输入
{
jieguo= (double) a / b; //进行强制类型转换
printf(".");
for (i = 0; i <= 10; i++) //开始转换(逐步乘三)
{
jieguo *= 3;
at[i] = (int) jieguo;
jieguo -= at[i];
}
if (at[10] == 2) //进制
at[9]++;
for (i = 9; i >= 0; i--) //满3进1
{
if (at[i] == 3)
{
at[i] = 0;
at[i - 1]++;
}
}
for (i = 0; i < 10; i++) //输出
printf("%d", at[i]);
printf("\n");
}
return 0; //结束程序
}
牵扯到强制类型转换,和进制。